5

我当前的 /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 时,谷歌报告:

DOMAIN 要求从您的 Google 帐户 EMAIL 中获取一些信息 - 电子邮件地址:NAME (EMAIL)

我的应用程序不需要用户的电子邮件,所以我想消除这个进入障碍。反正有没有消除这个要求。对于 Facebook,我发现我可以添加选项的“范围”属性,例如:

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

1 回答 1

3

根据对 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

祝你好运。我没有测试这个,只是阅读源代码。

于 2011-02-27T18:14:55.383 回答