我在Twitter上使用了gem。在回调时,检查用户是否存在并创建他或将他发送回主页。
我可能做错了什么,但是在我的回调代码中, request.env ['omniauth.origin']为nil

我的代码很简单:
what.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 对象。

谢谢你的帮助!

最佳答案

尝试使用0.2.0版-我已经能够使该版本正常运行,而Rails 3.0.9和Ruby 1.9.2-p180却没有任何问题。

  • 您上面的行不应该读为

    用户= auth.find_by_provider_and_uid(auth [“provider”],auth [“uid”])|| User.create_with_omniauth(auth)
  • 至于omniauth.originnil,请参阅this discussion
  • 关于ruby-on-rails - Omniauth-来源为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5792350/

    10-13 02:14