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 => ''}
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top