Ruby on rails 当使用分析url而不是youtube url时,为什么Google OAuth2身份验证失败?

Ruby on rails 当使用分析url而不是youtube url时,为什么Google OAuth2身份验证失败?,ruby-on-rails,oauth,google-analytics,oauth-2.0,google-analytics-api,Ruby On Rails,Oauth,Google Analytics,Oauth 2.0,Google Analytics Api,我正在为我的同事制作一个仪表板,在其他一些统计数据的旁边显示谷歌分析的一些统计数据。为了访问分析数据,我使用OAuth2。OAuth2需要一个作用域与身份验证请求一起发送,以便获取访问令牌。我在API控制台中创建了一个可以访问分析的客户端ID,并在初始值设定项中指定如下所示的范围: Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, ENV['ADMIN_DASHBOARD

我正在为我的同事制作一个仪表板,在其他一些统计数据的旁边显示谷歌分析的一些统计数据。为了访问分析数据,我使用OAuth2。OAuth2需要一个作用域与身份验证请求一起发送,以便获取访问令牌。我在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-oauth2
gem,以及我在某个示例中找到的范围。然而,对于我的实现,我认为这个范围很奇怪。而不是
http://gdata.youtube.com,userinfo.email,userinfo.profile,analytics.readonly
我想使用
https://www.googleapis.com/auth/analytics.readonly
,但更改到该范围会导致请求返回无效的\u凭据。指定只需要访问分析数据的正确方法是什么?

范围应该用空格字符分隔,而不是逗号:

如果您需要Youtube和分析范围,请使用:

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
如果您只需要分析,请使用:

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

嘿Jasper你能复制粘贴你在
无效\u凭证上的所有信息吗
错误?例如,您是否知道它是何时发生的,是在初始身份验证期间(您将用户重定向到授权页面),还是在响应Nivco的代码交换…Tnx期间发生的。我现在很忙,但今晚我将添加信息。错误将与重定向uri一起发送。感谢对我拼写的更正;)遗憾的是,您在第二个示例中建议的范围似乎触发了错误,我仍然不明白为什么。为什么批准提示为空?尝试将其删除或设置为自动。如果与API Explorer一起使用,您是否确认了您的客户ID/机密工作?(点击右上角的gear图标切换到使用您自己的客户id/secret)感谢您为我提供更多帮助:)我发现
approval\u prompt
应该在某个地方为空,不确定在哪里。然而,添加或删除它并没有什么区别。我在操场上测试了我的身份证和秘密,它在那里起作用。这并不让我感到惊讶,因为相同的凭证信息在授权YouTube和分析时确实有效。