2010-11-27 11 views
0

J'ai authlogic et openid fonctionnant correctement, et j'essaie d'intégrer oauth pour l'authentification de Twitter. Je ne veux pas à la fois un registre et signer sur le bouton, donc j'ai suivi cet exemple: Implicit user creation with Authlogic and Authlogic OAuth pluginAuthlogic avec OAuth et OpenID - DoubleRenderError

Je reçois le DoubleRenderError lors de l'enregistrement initial et de la connexion suivante, mais l'actualisation de la page permet à l'action de se terminer avec succès.

Mon users_controller créer:

 
    def create 
     @user = User.new(params[:user]) 
     @user.save do |result| # LINE A 
      if result 
       flash[:notice] = "Account registered!" 
       redirect_to account_url 
      else 
       unless @user.oauth_token.nil? 
        @user = User.find_by_oauth_token(@user.oauth_token) 
        unless @user.nil? 
         UserSession.create(@user) 
         flash.now[:message] = "Welcome back!" 
         redirect_to account_url   
        else 
         redirect_back_or_default root_path 
        end 
       else 
        redirect_back_or_default root_path 
       end 
      end 
     end 
    end 

Et mon user_sessions_controller créer:

 
    def create 
    @user_session = UserSession.new(params[:user_session]) 

    @user_session.save do |result| 
     if result 
     flash[:notice] = "Login successful!" 
     redirect_back_or_default account_url 
     else 
     render :action => :new 
     end 
    end 
    end 

est-il un moyen de résoudre ce problème? Merci

Répondre

0

Après des échecs répétés, ce qui suit semble travailler pour nom d'utilisateur authlogic normal/mot de passe, OAuth avec Twitter, et OpenID pour au moins Google et Yahoo, qui est tout ce que je me suis intéressé à

 
    def create 
    @user = User.new(params[:user]) 
    @user.save do |result| # LINE A 
    if result 
    flash[:notice] = "Account registered!" 
    redirect_to account_url and return 
    else 
    if @user.oauth_token 
     @user = User.find_by_oauth_token(@user.oauth_token) 

     UserSession.create(@user) 
     flash.now[:message] = "Welcome back!" 
     redirect_to account_url and return   
     else 
     flash[:notice] = "Something went awry. Perhaps the name or email is already in use." 
     redirect_to register_path and return 
    end 

    end 
    end 
    end 

De plus, J'ai ajouté 'et retourne' dans le bloc de mise à jour dans mon contrôleur d'utilisateurs après les succès/échecs de redirections/rendus