绕过非管理员用户的范围同意屏幕

时间:2014-05-25 18:22:38

标签: ruby-on-rails devise google-apps-marketplace

Google应用程序市场#5最佳做法表示用户在管理员安装应用程序后不应看到同意屏幕。我一直在尝试使用devise和omniauth-google-oauth2进行身份验证,在Rails应用程序上运行。我使用管理员帐户在测试域中设置了应用程序。但非管理员用户始终会看到同意屏幕。知道怎么避免吗? https://github.com/zquestz/omniauth-google-oauth2有一些帮助;但设置那里指定的任何选项都无济于事。

我的配置如下所示:

config.omniauth :google_oauth2, "code", "code", { access_type: "online", approval_prompt: "none", include_granted_scopes: "true", prompt: "select_account" }

指定“电子邮件,个人资料,日历,https://www.google.com/m8/feeds/”等范围会出现以下错误:

Error: invalid_scope

Some requested scopes were invalid. {valid=[https://www.googleapis.com/auth/calendar, https://www.google.com/m8/feeds/], invalid=[https://www.googleapis.com/auth/profile, https://www.googleapis.com/auth/email], noncanonical=[https://www.google.com/m8/feeds/(https://www.googleapis.com/auth/contacts)]}

2 个答案:

答案 0 :(得分:1)

添加

  

https://www.googleapis.com/auth/plus.me

到“Google Apps Marketplace SDK”中的范围列表解决了该问题。当域管理​​员安装应用程序的其余域时,用户将看不到同意屏幕。

我的omniauth配置现在已经简化了。它看起来如下:

config.omniauth :google_oauth2, "XXX.apps.googleusercontent.com", "YYY", { access_type: "online", approval_prompt: "none", include_granted_scopes: "true" }

答案 1 :(得分:0)

关于invalid_scope错误,我认为您需要使用以下范围进行个人资料和电子邮件

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile

使用https://developers.google.com/oauthplayground/查找其他Google API的有效范围