Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设计及;Rails 3.1中的omniauth Facebook身份验证_Ruby On Rails_Ruby On Rails 3_Devise_Omniauth - Fatal编程技术网

Ruby on rails 设计及;Rails 3.1中的omniauth Facebook身份验证

Ruby on rails 设计及;Rails 3.1中的omniauth Facebook身份验证,ruby-on-rails,ruby-on-rails-3,devise,omniauth,Ruby On Rails,Ruby On Rails 3,Devise,Omniauth,我一直在努力让Desive Facebook认证工作,现在我已经到了一个无法理解的地步,我想得到一些帮助 我通过Facebook链接登录,但点击它,我会出现以下错误,告诉我路线有问题 未知行为 找不到路径“/users/auth/facebook”的设计映射。也许你忘了把你的路线包在范围块里?例如:设计范围:用户确实匹配“/some/route”=>“some\u设计控制器”结束 这是我的文件 devise_for :users, :controllers => { :omniauth

我一直在努力让Desive Facebook认证工作,现在我已经到了一个无法理解的地步,我想得到一些帮助

我通过Facebook链接登录,但点击它,我会出现以下错误,告诉我路线有问题

未知行为

找不到路径“/users/auth/facebook”的设计映射。也许你忘了把你的路线包在范围块里?例如:设计范围:用户确实匹配“/some/route”=>“some\u设计控制器”结束

这是我的文件

  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
  root :to => 'home#index'
编辑:

通过将路线更改为,解决了该问题

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
root :to => 'home#index'
现在我遇到了下一个让Facebook身份验证工作的错误,但是当从“允许应用程序屏幕”返回时,ruby抛出了

nil:NilClass的未定义方法“closed”

activesupport(3.1.0.rc8)lib/active\u support/whiny\u nil.rb:48:in
method\u missing'
/opt/local/lib/ruby/1.8/net/http.rb:1060:in
request' 法拉第(0.6.1)lib/faraday/adapter/net_http.rb:51:in
call'
法拉第(0.6.1)lib/faraday/request/url_encoded.rb:14:in
call' 法拉第(0.6.1)lib/faraday/request.rb:88:in
run'
法拉第(0.6.1)lib/faraday/request.rb:28:in
run' 法拉第(0.6.1)lib/faraday/connection.rb:170:in
run_请求'
oauth2(0.4.1)lib/oauth2/client.rb:63:in
request'


这使用的是Rails 3.1.0rc8和ruby 1.9.2,我昨天刚刚完成了我的应用程序omniauth登录,使用的是完全相同的指南和Rails 3.1 final

我不确定你走了你的路线好的,我的看起来是这样的:

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do
  get 'sign_in', :to => 'users/sessions#new', :as => :new_user_session
  get 'sign_out', :to => 'users/sessions#destroy', :as => :destroy_user_session
end

devise_scope :user do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end
在我的
design\u for:users
块中,我进行了登录和注销,因为我使用的是OmniAuth,没有其他身份验证

该指南还指出,
get'/users/auth/:provider'
行应该位于
design\u范围:user


我不确定这是否能解决您的问题,但至少我想指出这些观点,这些观点不适合发表评论

我想您可以回答我的问题。我在omniauth也有类似的问题