ruby-on-rails - 使用 Rails Omniauth gem 和 Google OpenID 时如何不需要用户的电子邮件

标签 ruby-on-rails openid omniauth google-account attribute-exchange

我当前的/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/

相关文章:

ruby-on-rails - 错误 : undefined local variable or method `resource_class' when installing omniauth-twitter

ruby-on-rails - ruby rails : not closing HTTP response (when "asian characters" are displayed

ruby-on-rails - 为什么这条评论会在 Ruby on Rails 上产生编译错误?

ruby-on-rails - rails 3 : Get current view's path helper?

image - 开放ID。如何创建特殊链接

ruby-on-rails - Rails 和 Omniauth - 我应该从身份验证散列中保存多少数据?

ruby-on-rails - 如何显示来自rails本地项目文件夹的图像?

asp.net - 使用 OpenID 和 DotNetOpenID 在 ASP.NET 站点中对管理员进行身份验证的安全方法

php - 使OpenID在现有的MyBB安装上运行

ruby-on-rails - Rails 4 - 设计不绑定(bind) session