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]を再確認しました:
サービスアカウントが少なくとも1つのAPI(YouTubeアナリティクス)にアクセスでき、関連するアカウント([email protected])がアナリティクスウェブインターフェースにアクセスできることを考えると、特にアナリティクスAPIにアクセスするサービスアカウントに何か問題があるようです。 。
何か案は?
同様のトピック:
GAビュー。
管理者>表示>ユーザー管理>「次の権限を追加:」
正しいIDを選択してください!
私の場合、正しい資格情報(アカウントID、アカウントシークレット-> authorization_code-> access_token)を使用しており、電子メールのアクセス許可を正しく設定していましたが、Admin>アカウント設定ページと単にga:を前面に追加します。
実際に必要なIDはテーブルIDです!(または少なくともここでほとんどの人がアカウントIDに言及しているので、それは私のために働いたものですうまくいきませんでした。)。これはここで見つけることができます: https://ga-dev-tools.appspot.com/account-Explorer/
そして、次のようにクエリできます
service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')
このAPIは全体的に不適切に文書化されており、UIは不明瞭でした。しかし、それは私だけかもしれません。
正しいtable_idを入力していることを確認してください
(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
開発者のメールを分析ユーザーに追加した後もこのメッセージが表示される場合。
新しいGoogle_Service_Analytics($ client);の前に、オブジェクトにスコープを追加する必要がある場合があります。
$ client-> setScopes( " https://www.googleapis.com/auth/plus.login ");
私はこれを解決するために一日を費やしました!
また、それを機能させるには、開発者コンソールにアクセスしてAPIを有効にする必要がありました。 開発者コンソール に移動し、プロジェクトを選択して、使用するAPIを有効にします。
分析でアカウントレベルにメールを追加した後でも、同じ許可の問題がありましたが、次の提案は助けましたが解決しませんでした:
$ client-> setScopes( "https://www.googleapis.com/auth/plus.login");
それは私にとってはうまくいきませんでしたが、これはうまくいきました:
$ client-> setScopes( "https://www.googleapis.com/auth/analytics");
認証にhttps://が必要になりました。
通知するためだけに新しい場合は、必要な3ステップの手順