35 votes

Devise + Omniauth - Comment transmettre des paramètres supplémentaires?

J'ai la possibilité de l'application de la charge /utilisateurs/auth/facebook pour se connecter à facebook. Je veux être en mesure de savoir de provenance de la demande. Si c'était à partir d'un utilisateur qui est de l'inscription avec facebook, ou un utilisateur existant qui veut simplement se connecter avec facebook. Basé sur le type, les réponses sont très différentes.

Comment puis-je passer un paramètre à omniauth lors de l'authentification. J'ai essayé de faire:

/users/auth/facebook?connect_action=signup_connect_to_facebook

Mais que connect_action param ne pas le faire quand il a frappé AuthenticationsController#Créer

Des idées? Merci

97voto

fuzzyalej Points 3163

Vous devez utiliser les options :params , comme dans

 omniauth_authorize_path(:user, :facebook, var: 'value', var2: 'value2' )
 

et plus tard dans le rappel, vous pouvez accéder à request.env['omniauth.params'] pour obtenir le hachage! :)

7voto

e3matheus Points 1033

Si la demande est faite à partir de différentes pages de votre application, vous pouvez examiner la demande.env['omniauth.origine']. Omniauth enregistre cette variable automatiquement.

Ici est une explication plus détaillée

Autant que de passage des paramètres personnalisés, j'ai essayé de le faire en vain. La solution de contournement consiste à les stocker dans la session avant d'aller pour le fournisseur comme expliqué ici.

Espérons que cela vous aide.

0voto

Mateus Points 39

Pour Facebook, utilisez le paramètre «état» et transmettez ce que vous voulez, mais n'oubliez pas l'encodage.

 /users/auth/facebook?state=parameter
 

Vous pouvez envoyer le paramètre sous forme d'URL json codé, puis l'analyser dans le rappel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X