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语句中超时......
答案 0 :(得分:0)
您应该将您的oauth回调映射到创建操作。
# config/routes.rb
match '/auth/:provider/callback' => 'authentications#create'