J'ai l'authentification Facebook implémentée avec succès en utilisant le omniauth-facebook gem avec Devise. Cependant, ce que je veux faire est, après Facebook authentifie, les rediriger vers un formulaire où ils peuvent spécifier leur mot de passe (et confirmation de mot de passe) avant que l'enregistrement est créé.Rails - Obtenir des champs supplémentaires lors de l'enregistrement de Facebook Omniauth
Comment est-ce que je peux faire ceci?
Mon code est assez standard basé sur la documentation de la pierre précieuse:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
sign_in_and_redirect @user, :event => :authentication
set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
def failure
redirect_to root_path
end
end
user.rb
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.username = auth.info.name.downcase.gsub(" ", "")
end
end
, qui est le but de l'omniauth, l'utilisateur ne doit pas se rappeler password..just curieux, pourquoi voudriez-vous que? –
vrai. En fait, je veux d'autres domaines, aussi. comme leur pays. – yellowreign