重定向时设计+ Facebook Omniauth错误

时间:2012-06-26 22:22:38

标签: ruby-on-rails-3 devise omniauth facebook-authentication

我正在使用设计,omniauth& facebook-omniauth for my Rails 3.1 app。身份验证后,我想将用户重定向到正在查看的页面。我使用了以下代码:

def facebook
@user = Spree::User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
flash[:notice] = "Yipee! You were successfully authorized from your Facebook account!!"
sign_in @user, :event => :authentication
redirect_to request.referrer
end

仅在创建用户时才会出现以下错误:

ActionController::ActionControllerError in Spree::OmniauthCallbacksController#facebook
Cannot redirect to nil!

以下时间用户已创建时,&登录后。

你怎么建议我解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以覆盖应用程序控制器中登录/注册路径的功能:

def after_sign_up_path_for(resource)
  credit_path 
  return request.env['omniauth.origin'] || session[:return_to] 
end 

def after_sign_in_path_for(resource)
  return request.env['omniauth.origin'] || session[:return_to]
end

使用会话将当前路径存储在您希望他们前往的路径中:session[:return_to] = request.url #store current location

或者您创建一个方法,一旦它们转到路径并存储该位置,它将始终被调用。当你这样做的时候注意一个巨大的循环重定向。