首页 文章

使用OAuth和OpenID进行Authlogic - DoubleRenderError

提问于
浏览
0

我有authlogic和openid正常工作,我正在尝试将oauth集成到twitter身份验证中 . 我不想要一个注册和登录按钮,所以我按照这个例子:Implicit user creation with Authlogic and Authlogic OAuth plugin

我在初始注册和后续登录时收到DoubleRenderError,但刷新页面可以使操作成功完成 .

我的users_controller创建:

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创建:

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

有办法解决这个问题吗?谢谢

1 回答

  • 0

    在多次失败后,以下内容似乎适用于正常的authlogic用户名/密码,OAuth和Twitter,以及OpenID至少谷歌和雅虎,这是我感兴趣的

    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
    

    此外,在成功和失败重定向/渲染后,我在我的用户控制器中添加了“并返回”更新块

相关问题