【发布时间】:2011-04-26 15:05:29
【问题描述】:
我在 twitter 上使用 gem。在回调时,检查用户是否存在并创建他或将他发送回主页。
我可能做错了什么,但在我的回调代码中,request.env['omniauth.origin'] 为 nil。
我的代码很简单:
whatever.html.erb
<%= link_to image_tag("twitter-connect.png"), "/auth/twitter" %>
routes.rb
match "/auth/:provider/callback" => "sessions#create"
sessions_controller.rb
def create
auth = request.env["omniauth.auth"]
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
if !user.email
redirect_to confirm_path, :notice => "Add your email!"
else
redirect_to request.env['omniauth.origin'] || root_url, :notice => "Signed in!"
end
end
如果我在回调后立即提出 request.env['omniauth.origin'],我会得到一个 nil 对象。
感谢您的帮助!
【问题讨论】:
-
您使用的是哪个版本的omniauth?
-
我问是因为,我认为新版本的 omniauth 存在与此相关的问题。
-
嗨,阿迪亚。我今天早上刚刚更新了 0.2.4,所以是最新版本。
-
我对 0.2.3 和 0.2.4 有同样的问题。在失败回调中,我没有得到任何omniauth.origin。我也尝试将 ?origin=/foo 附加到我的 /auth/google 链接,但没有成功。