webdevqa.jp.net

Google Analytics API:「ユーザーにはこのアカウントに対する十分な権限がありません。」

Google Analytics APIにアクセスして実験情報を取得するRubyアプリを作成しています。

アプリは、次の機能を介してGoogleサービスアカウントを使用して接続および認証します。

def connect
  ...
  @@client = Google::APIClient.new(:application_name => 'My Service App', 
                                    :application_version => '1.0.0')
  key_file = Rails.root.join('config', 'privatekey.p12').to_s
  key_secret = 'somesecret'
  key = Google::APIClient::PKCS12.load_key(key_file, key_secret)
  asserter = Google::APIClient::JWTAsserter.new(
    SECRETS[:google_service_account_email],
    ['https://www.googleapis.com/auth/yt-analytics.readonly',
     'https://www.googleapis.com/auth/analytics.readonly'
    ],
    key
  )
  @@client.authorization = asserter.authorize()
  ...
end

...問題なく両方のAPIを認証および検出します。

YouTube Analytics APIに対するクライアントの使用は問題なく機能します。まったく同じアカウントを使用して、Analytics APIにアクセスするには...

response = @@client.execute({
  # 'analytics is the API object retrieved via discover_api()
  :api_method => analytics.management.experiments.list, 
  :parameters => {
    'accountId' => 'AAAAAAAA',
    'profileId' => 'PPPPPPPP',
    'webPropertyId' => 'UA-WWWWWWWW-#'
  }
})

403エラー応答が返されます。

{"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this account."}

承認に関しては、アカウント[email protected]を再確認しました:

  • Googleアナリティクスのウェブインターフェースに対する完全な権限を持っています。[email protected]を使用してログインしましたアカウントを作成し、リストしようとした同じ実験を表示することができました。
  • Analytics APIを有効にしました。APIコンソール内で、サービスセクションでAnalytics APIアイテムはONに切り替わります。 (YouTubeアナリティクスと同じように。)
  • 適切なAccountID、ProfileID、およびWebPropertyIDの値を使用しています。Googleアナリティクスのウェブインターフェースから直接コピーしました。

サービスアカウントが少なくとも1つのAPI(YouTubeアナリティクス)にアクセスでき、関連するアカウント([email protected])がアナリティクスウェブインターフェースにアクセスできることを考えると、特にアナリティクスAPIにアクセスするサービスアカウントに何か問題があるようです。 。

何か案は?

同様のトピック:

33
David Elner

GAビュー。

管理者>表示>ユーザー管理>「次の権限を追加:」

51
Goose

正しいIDを選択してください!

私の場合、正しい資格情報(アカウントID、アカウントシークレット-> authorization_code-> access_token)を使用しており、電子メールのアクセス許可を正しく設定していましたが、Admin>アカウント設定ページと単にga:を前面に追加します。

実際に必要なIDはテーブルIDです!(または少なくともここでほとんどの人がアカウントIDに言及しているので、それは私のために働いたものですうまくいきませんでした。)。これはここで見つけることができます: https://ga-dev-tools.appspot.com/account-Explorer/

enter image description here

そして、次のようにクエリできます

service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')

このAPIは全体的に不適切に文書化されており、UIは不明瞭でした。しかし、それは私だけかもしれません。

16
Simon Somlai

正しいtable_idを入力していることを確認してください

(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
2
Shane

開発者のメールを分析ユーザーに追加した後もこのメッセージが表示される場合。

新しいGoogle_Service_Analytics($ client);の前に、オブジェクトにスコープを追加する必要がある場合があります。

$ client-> setScopes( " https://www.googleapis.com/auth/plus.login ");

私はこれを解決するために一日を費やしました!

2
Qin Wang

また、それを機能させるには、開発者コンソールにアクセスしてAPIを有効にする必要がありました。 開発者コンソール に移動し、プロジェクトを選択して、使用するAPIを有効にします。

2
John

分析でアカウントレベルにメールを追加した後でも、同じ許可の問題がありましたが、次の提案は助けましたが解決しませんでした:

$ client-> setScopes( "https://www.googleapis.com/auth/plus.login");

それは私にとってはうまくいきませんでしたが、これはうまくいきました:

$ client-> setScopes( "https://www.googleapis.com/auth/analytics");

認証にhttps://が必要になりました。

2
user2760338

通知するためだけに新しい場合は、必要な3ステップの手順

  1. Google Analytics Reporting APIを有効にして、サービスメールアカウント(OAuthクライアントID)を作成します
  2. Googleコンソールでこのサービスのメールを追加して許可を与える
  3. Googleアナリティクストラッキングでこのサービスのメールアカウントを追加して許可を与える->ユーザー管理
0
Zahid