我正在为我的同事制作一个仪表板,其中显示了Google Analytics旁边的一些统计信息以及其他一些统计信息。要访问Google Analytics数据,请使用OAuth2。 OAuth2要求范围与身份验证请求一起发送以获取访问令牌。我在API控制台中创建了一个可以访问Google Analytics的客户端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-oauth2
gem,以及我在某个例子中找到的范围。但是,对于我的实现,我认为这个范围很奇怪。而不是http://gdata.youtube.com,userinfo.email,userinfo.profile,analytics.readonly
我想使用https://www.googleapis.com/auth/analytics.readonly
,但更改为该范围会导致请求返回invalid_credentials
。需要指定仅访问分析数据的正确方法是什么?
答案 0 :(得分: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
如果您只需要Google 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