使用Rails Omniauth gem和Google OpenID时,如何不要求用户发送电子邮件

时间:2011-02-13 07:57:57

标签: 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

当我通过访问/ auth / google登录Google时,Google报告:

  

DOMAIN要求您提供Google帐户电子邮件中的部分信息    - 电子邮件地址:NAME(EMAIL)

我的应用程序不需要用户的电子邮件,因此我想删除此入门障碍。无论如何都有删除此要求。对于Facebook,我发现我可以添加选项的“范围”属性,例如:

provider :facebook, 'APP_ID', 'APP_SECRET', {:scope => ''}

1 个答案:

答案 0 :(得分:3)

根据对OpenID策略(Google Aps auth继承自的源)的来源的快速回顾,您可以传入选项,指定哪些属性是可选的,而不是属性交换(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
祝你好运。我没有测试过,只是阅读了源代码。