2010-11-27 5 views
0

authlogic 및 openid가 올바르게 작동하며 twitter 인증을 위해 oauth를 통합하려고합니다. 등록과 로그인 버튼을 모두 원하지 않으므로이 예제를 따라갔습니다. Implicit user creation with Authlogic and Authlogic OAuth pluginOAuth 및 OpenID가있는 Authlogic - DoubleRenderError

초기 등록과 이후 로그인시 DoubleRenderError가 발생하지만 페이지를 새로 고침하면 작업이 성공적으로 완료됩니다.

 
    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 

을 그리고 내 user_sessions_controller 작성 :

내 users_controller 생성이 문제를 해결할 수있는 방법이

 
    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 

있습니까? 감사합니다

답변

0

실패를 거듭 한 후, 다음, 나는

 
    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 

또한에 관심이있는 모든 인, 오픈 ID 적어도 구글과 야후 트위터 정상 authlogic 사용자 이름/암호, OAuth를 위해 일할 나타나고, "success and failure redirects/renders"를 모두 입력하고 사용자 컨트롤러의 업데이트 블록에 'return and return'을 추가했습니다.