我当前的/config/initializers/omniauth.rb 文件包含:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end
当我通过 Google 登录/auth/google 时,Google 报告:
DOMAIN is asking for some information from your Google Account EMAIL - Email address: NAME (EMAIL)
我的应用程序不需要用户的电子邮件,所以我想消除这个进入障碍。反正有没有删除这个要求。对于 Facebook,我发现我可以添加选项的“范围”属性,例如:
provider :facebook, 'APP_ID', 'APP_SECRET', {:scope => ''}
最佳答案
基于对 OpenID 策略(Google Aps 身份验证继承自)的源代码的快速浏览,您可以传入选项,指定哪些属性是可选的,哪些属性是属性交换 (AX) 身份验证所必需的。
有关选项,请参阅此处的源代码:https://github.com/intridea/omniauth/blob/master/oa-openid/lib/omniauth/strategies/open_id.rb
基于此,我认为您可以像这样更改选项以删除电子邮件作为必需属性:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id', :required => [], :optional => []
end
祝你好运。我没有测试这个,只是阅读源代码。
关于ruby-on-rails - 使用 Rails Omniauth gem 和 Google OpenID 时如何不需要用户的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4983109/