web-dev-qa-db-ja.com

Analytics Google APIエラー403:「ユーザーにはGoogle Analyticsアカウントがありません」

このページのGoogleアナリティクスのステップバイステップガイドに基づいて、スクリプトを作成しています。

https://developers.google.com/analytics/resources/tutorials/hello-analytics-api

データへのアクセスを試行するまで、認証は問題なく行われます。戻りコードは403で、エラーメッセージは次のとおりです。

ユーザーにはGoogle Analyticsアカウントがありません

このメッセージには意味がありません。私のアカウントには複数のWebサイトを追跡するGoogle分析データがあり、Webブラウザーから問題なくアクセスできます。 Google APIコンソールからAnalytics APIを許可しました。APIアクセスにより適切なデータが提供されます。

130
user989501

私もこの問題を抱えていました。サービスアカウントのメールアドレスを、アクセスしたいGoogleアナリティクスプロファイルに追加して修正しました。

Google APIコンソールの[APIアクセス]タブを見て、サービスアカウントのメールアドレス([email protected]など)を取得しました。

次に、 Googleのアナリティクスプロファイルにメールアドレスを追加する手順 に従いました。これで、すべてが期待どおりに機能します。

幸運を!

269

指定したメールを追加するだけです(71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.comの形式)

ユーザーマネージャーへ:

User does not have any Google Analytics account

助けてほしい

70
itsnikolay

私は同じ問題に直面していました。サービスアカウントユーザー(your [email protected])のメールIDをアナリティクスアカウントのユーザーに追加することで解決しました。

分析-ホームページ->管理者(左ペイン)->ユーザー管理->追加(メニューの右側にあるプラス記号をクリック)->新規ユーザーの追加->電子メールアドレスの入力に電子メールIDを追加します。

enter image description here

これで問題は解決します。

16
vikash singh

上記のコメントに記載されていますが、アカウントのユーザー管理の下にメールアドレスを追加した場合、機能しません。画面のview部分の下にあるUser Managementをクリックする必要があります。

enter image description here

7
Lukos

また、認証しようとしているGoogleアカウントでログインしたことがない場合にも、このエラーが発生します。

4
Andrew Bullock

メールアカウントのアクセス許可をGoogleアナリティクスの内部から「読み取りと分析」から別のものに変更し、保存してからアクセス許可を「読み取りと分析」に戻すまで、403エラーが発生していました。

2
Pearce

403エラーが発生していました。これらの手順は、私を回避しました。明確にするために、Googleのサンプル「HelloAnalytics.php」をOAuth(cronジョブなどに適したユーザーとの対話なし)で動作させようとしていました。

Analytics APIを有効にした後、APIとAuth/Credentialsの下に新しい「サービスアカウント」を作成しました。 .p12キーペアを保存しました。次に、Analyticsユーザー管理コンソールにアクセスし、そのサービスユーザーのメールアドレスを追加しました。

許可リストでonly "Read&Analyze" onlyをオフにすると、PHP AP​​Iを使用した.p12認証が機能します。 「ユーザーの管理」および/または「編集」を追加すると、403が表示されます。これが役立つことを願っています。

1
Johnny O

私もこの問題を抱えていましたが、問題は、あまりにも多くの許可を要求したことであることがわかりました。開発者コンソールは、http://www.googleapis.com/auth/analyticsおよびhttp://www.googleapis.com/auth/analytics.readonlyの両方の許可を要求するように指示します。 subクレームも使用していた場合、これは機能しませんでした。 subクレームは、他のユーザーに代わって —私の場合、サービスアカウントを所有するGoogleアカウントで動作するアクセストークンを発行するようGoogleに指示します。私はanalyticsパーミッションを削除し、サブクレームでanalytics.readonlyに固執しました:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"[email protected]"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

発行されたBearerトークンにより、まったく異なるGoogleアカウントが所有しているが、Gmailユーザー([email protected])と共有(読み取り専用)されているプロファイルに対して(少なくともいくつかの)Google Analyticsクエリを実行できます。 。

0
mogsie

Google Analyticsにサインインしなかったため、同じエラーが発生しました。そのため、分析アカウントにサインインして解決しました。

0
Rumman Siddiqui

APIを使用しようとしているユーザーは、GAサービスを有効にしていません。
単にGoogleアカウントを持っているだけでは不十分です

...ただし、Googleアカウントを持っているだけでは、アナリティクスへのアクセスが自動的に許可されるわけではありません。まず、Google Analyticsに登録する必要があります。これは1回限りの簡単なプロセスです...

0
bldoron

私はそれを確認することでこれを修正することができました

client = Google :: APIClient.new(:application_name => 'X'、:application_version => '1')

上記のアプリケーション名変数 'Xは、GAダッシュボード上のアカウント名であり、プロパティ名ではなく、私の場合はアクセスしたいサイトの実際のURLです。

混乱しますが、ありがたいことに修正しました(Googleに感謝しません!)

0
Jonathan_W

この問題は、「サブ」引数を提供しないために発生します。これを提供しない限り、呼び出しはその長いサービスアカウントのメールに代わって行われます。

したがって、サブ引数を指定するだけで、レポートで既にアクセス権を付与している電子メールで、うまくいくはずです!

0
Sony Kadavan

サービスアカウントを使用する代わりに、OAuth client ID資格情報を使用して、(このスレッドの上位の回答に従って)新しいユーザーアクセス許可を追加する必要を回避できます。

APIクレデンシャルダッシュボード に移動し、[クレデンシャルの作成]-> [OAuthクライアントID]をクリックします。その後、APIの認証に必要なクライアントIDとクライアントシークレットを取得する必要があります。

OAuth2WebServerFlowを使用して、使用ごとに認証できるようになりました。 python3の例を次に示します。

from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow

# TODO: Fill these in...
CLIENT_ID = ''
CLIENT_SECRET = ''
VIEW_ID = ''

flow = OAuth2WebServerFlow(
    CLIENT_ID, CLIENT_SECRET,
    'https://www.googleapis.com/auth/analytics.readonly',
    redirect_uri='urn:ietf:wg:oauth:2.0:oob'
)

authorize_url = flow.step1_get_authorize_url()
print('Receive code from:\n%s\n' % authorize_url)
code = input('Enter code here:').strip()
credentials = flow.step2_exchange(code)

api = build('analyticsreporting', 'v4', credentials=credentials)
body={
    'reportRequests': [{
        'viewId': VIEW_ID,
        'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
        'metrics': [{'expression': 'ga:sessions'}],
        'dimensions': [{'name': 'ga:country'}]
    }]
}

data = api.reports().batchGet(body=body).execute()
0
AlexG