2012-02-02 14 views
12

Spero che qualcun altro abbia una buona soluzione per questo problema. Permettiamo ai nostri utenti di registrarsi usando Facebook (piacendo a un'app), e allo stesso tempo inseriscono il nostro database come utenti sul nostro sito.Devise, OmniAuth e Facebook - Come consentire all'utente di modificare la password?

Al termine della registrazione sembra che Devise/OmniAuth stia creando una password casuale (?). Come posso consentire agli utenti di modificare il loro profilo, che (e dovrebbe) per impostazione predefinita in Devise richiede che inseriscano la loro password corrente?

risposta

8

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

+0

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. –

Problemi correlati