omn​​iauth.auth上的nil方法错误

时间:2013-12-26 03:10:25

标签: ruby omniauth

    def create
   5      debugger
   6      auth=request.env["omniauth.auth"]
=> 7      user=Moviegoer.find_by_provider_and_uid(auth["provider"],auth["uid"]) ||
   8        Moviegoer.create_with_omniauth(auth)
   9      session[:user_id] = user.id
   10      redirect_to movies_path

上面的代码来自控制器动作(创建) - 我运行调试器; 我得到auth变量的'nil'值 - 我在gem文件中有omniauth并且bundle安装了它...仍然无法正确执行上述语句...我在这里错过了什么......? 的 ------

我尝试了一些事情并且进步了一些步骤 - 但仍然遇到了错误

于2013-12-28 17:38:26 -0800开始获取127.0.0.1获取“/ auth / twitter”

超时::错误(执行已过期):

应用程序控制器中的代码是:

class ApplicationController < ActionController::Base
  before_filter :set_current_user
  protected # prevents method from being invoked by a route
  def set_current_user
    debugger
    # we exploit the fact that find_by_id(nil) returns nil
    @current_user ||= Moviegoer.find_by_id(session[:user_id])
    redirect_to '/auth/twitter' and return unless @current_user
  end
end

我相信代码在redirect_to语句中超时......

1 个答案:

答案 0 :(得分:0)

您应该将您的oauth回调映射到创建操作。

# config/routes.rb
match '/auth/:provider/callback' => 'authentications#create'