动态回调网址与omniauth策略

时间:2014-01-31 12:46:56

标签: ruby-on-rails ruby facebook omniauth

在我的项目中使用omniauth-facebook(g +)gems为用户提供了在1次点击中创建会计的能力。但是,在用户登录facebook(g +)后,他被重定向到回调网址。就我而言,它看起来像www.example.com/users/omniauth_callbacks/facebook

facebook行为看起来像

def facebook
@user = User.find_by_email(ENV['omniauth'].email)
if @user
sign_in @user
redirect_to root_path
else
create_user_account(ENV['omniauth'])
end

但是我不想将redirect_to root_path重新命名,而是希望将用户返回到他称为sign_in进程的页面。我尝试使用redirect_to:back,但是这会因为空HTTP_REFERRER而引发错误。在用户启动sign_in进程之前是否还有其他方法可以跟踪控制器和操作,然后将其存储并在回调后使用?

2 个答案:

答案 0 :(得分:0)

Omniauth本身并未提供任何此类工具。但是,你可以自己实现一些简单的东西。例如,您可以将当前网址存储在Cookie /会话中,并在facebook方法中重定向到该网址。这是一个类似的回答question

答案 1 :(得分:0)

回答自己的问题。这是一段哈希,包含这些信息。它存储在 request.env['omniauth.origin']