OmniAuth使用谷歌oauth 2战略范围失败

y4k*_*4ku 13 ruby-on-rails google-calendar-api oauth-2.0 omniauth

我正在使用OmniAuthgoogle-oauth-2策略从谷歌获取日历数据.

如果我没有在scope字段中放置任何内容它工作正常,我得到没有auth/failure消息的默认信息,我可以正常使用该应用程序.

但是,当我添加一个范围时,如下例所示,我得到一个"auth/failure?message = invalid_credentials".

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], { :scope => 'https://www.google.com/calendar/feeds/' }
end
Run Code Online (Sandbox Code Playgroud)

有什么我缺少的东西或我应该改变的东西?

y4k*_*4ku 23

来自google-oauth-2策略作者的快速电子邮件指出了以下内容:

如果您不包含配置文件范围,则无法进行身份验证.

通过添加userinfo.emailuserinfo.profile(以及日历范围)到逗号分隔:scope列表,我能够解决问题.

例:

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
           { :scope => 'userinfo.email, userinfo.profile, https://www.googleapis.com/auth/calendar' }
end
Run Code Online (Sandbox Code Playgroud)

  • 啊.最后得到了这个,除了我仍然使用逗号,但逗号后没有空格.如果您查看源代码(https://github.com/zquestz/omniauth-google-oauth2/blob/master/lib/omniauth/strategies/google_oauth2.rb#L22),它会用逗号分隔字符串.工作样本:`provider:google_oauth2,google_key,google_secret,{scope:"https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile,https ://www.googleapis.com/auth/analytics.readonly",access_type:'offline',approval_prompt:''}` (7认同)

And*_*ves 11

有趣,这对我不起作用.我能够使它工作,从范围中删除逗号:

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
    { :scope => 'https://www.googleapis.com/auth/docs https://www.googleapis.com/auth/userinfo.profile' }
end
Run Code Online (Sandbox Code Playgroud)