4

私は同僚のために、Google アナリティクスからのいくつかの統計を他の統計の横に表示するダッシュボードに取り組んでいます。Analytics データにアクセスするには、OAuth2 を使用します。OAuth2 では、アクセス トークンを取得するために、認証要求と共に送信されるスコープが必要です。Analytics にアクセスできる API コンソールでクライアント ID を作成し、次のような初期化子でスコープを指定します。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['ADMIN_DASHBOARD_GOOGLE_CLIENT_ID'], ENV['ADMIN_DASHBOARD_GOOGLE_CLIENT_SECRET'], { access_type: 'online', approval_prompt: '', scope: 'http://gdata.youtube.com,userinfo.email,userinfo.profile,analytics.readonly' }
end

これはomniauth-google-oauth2gemと、どこかの例で見つけたスコープを使用しています。しかし、私の実装では、このスコープは奇妙だと思います。代わりにhttp://gdata.youtube.com,userinfo.email,userinfo.profile,analytics.readonlyを使用したいのですhttps://www.googleapis.com/auth/analytics.readonlyが、そのスコープに変更すると、リクエストは を返しinvalid_credentialsます。分析データへのアクセスのみが必要であることを指定する正しい方法は何ですか?

4

1 に答える 1

3

スコープは、コンマではなくスペース文字で区切る必要があります。

https://developers.google.com/accounts/docs/OAuth2WebServer#formingtheurl

Youtube と Analytics のスコープが必要な場合は、次を使用します。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['ADMIN_DASHBOARD_GOOGLE_CLIENT_ID'], ENV['ADMIN_DASHBOARD_GOOGLE_CLIENT_SECRET'], { access_type: 'online', approval_prompt: '', scope: 'http://gdata.youtube.com,userinfo.email https://www.googleapis.com/auth/analytics.readonly' }
end

Analytics だけが必要な場合は、次を使用します。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['ADMIN_DASHBOARD_GOOGLE_CLIENT_ID'], ENV['ADMIN_DASHBOARD_GOOGLE_CLIENT_SECRET'], { access_type: 'online', approval_prompt: '', scope: 'https://www.googleapis.com/auth/analytics.readonly' }
end
于 2012-12-10T18:07:39.490 に答える