Ho avuto esattamente lo stesso problema, quindi spero che la mia soluzione sarà utile.
in base al largo i dettagli nella tua domanda ti parto dal presupposto seguendo la guida OmniAuth nel wiki devise: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
Nella seguente metodo:
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.where(:email => data.email).first
user
else # Create a user with a stub password.
User.create!(:email => data.email, :password => Devise.friendly_token[0,20])
end
end
ho cambiato la logica nel blocco altro perché si stava creando un nuovo utente nel database subito e hashing una password per loro:
else # Create new user
user =User.new
user
end
Invece ho appena fatto un nuovo utente in modo t Dopo aver ottenuto le informazioni di Facebook, le indirizzo alla pagina di registrazione dove ho le informazioni inserite nei campi del modulo in cui possono modificare e creare una password.
Appena sarà necessario per assicurarsi di aggiornare il tuo
def self.new_with_session(params, session)
per aggiungere tutte le informazioni facebook rilevanti si ha afferrato per un nuovo utente e assegnarlo al nuovo oggetto utente in modo che tutti i campi sono popolati con il loro informazioni nella pagina di registrazione. In modo che dopo aver finito di digitare la password e aggiungere o modificare qualsiasi informazione e fare clic su Invia creare il nuovo utente. Spero che lo trovi utile.
Questa era una poltiglia di idee per la pagina wiki sul elaborare e l'esercitazione Railscast omniauth: http://railscasts.com/episodes/235-omniauth-part-1
suppongo che sia una buona soluzione. Sarebbe molto utile per me lasciare che l'utente venga creato immediatamente quando si connettono tramite Facebook. Suppongo che potrei avere un campo booleano come "hascreatedownpassword". Grazie per l'idea. –