2010-11-27 66 views
0

我有authlogic和openid正常工作,并且正在尝试将oauth集成到Twitter身份验证中。我不想同时注册和登录按钮,所以我按照此示例进行操作:Implicit user creation with Authlogic and Authlogic OAuth plugin使用OAuth和OpenID进行身份验证 - DoubleRenderError

我在初始注册和后续登录时收到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 

有没有解决这个办法吗?由于

回答

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 

此外,在成功和失败重定向/呈现后,我在用户控制器中添加'并返回'到更新块中

相关问题