Comment ne pas exiger des e-mails de l'utilisateur lorsque vous utilisez Rails Omniauth Gem et Google OpenID
-
13-11-2019 - |
Question
Mon fichier actuel /config/initializers/omniauth.rb contient:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :open_id, nil, :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end
Lorsque je me connecte via Google en allant à / auth / google, rapporte Google:
Le domaine demande des informations sur votre compte Google Email - Adresse e-mail: nom (e-mail)
Mon application n'a pas besoin de l'e-mail de l'utilisateur et j'aimerais donc supprimer cette barrière à l'entrée. Y a-t-il de toute façon de supprimer cette exigence. Pour Facebook, j'ai trouvé que je peux ajouter la propriété "Scope" des options, par exemple:
provider :facebook, 'APP_ID', 'APP_SECRET', {:scope => ''}
La solution
Sur la base d'un examen rapide de la source de la stratégie OpenID (dont Google APS Authrate de), vous pouvez transmettre des options spécifiant quels attributs sont facultatifs par rapport à l'autoritaire des attributs Exchange (AX).
Voir le code source ici pour les options: https://github.com/intridea/omniauth/blob/master/oa-opénid/lib/omniauth/strategies/open_id.rb
Sur la base de cela, je pense que vous pourriez modifier les options comme ainsi pour supprimer les e-mails comme un attribut requis:
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
Bonne chance. Je n'ai pas testé cela, en lisant juste la source.