2011-09-07 73 views
2

我已經關注this guide獲取Devise Facebook身份驗證的工作,現在我已經到了一個我無法理解的地步,我希望得到一些幫助。在Rails 3.1中設計和omniauth Facebook身份驗證

我得到的登錄與Facebook鏈接,但點擊它,我得到以下錯誤,告訴我有一個與路線

未知的動作有些不對勁

找不到制定的路徑映射「 /用戶/認證/臉譜」。也許你忘了把你的路線包裹在範圍塊內?例如:devise_scope:用戶做匹配 「/一些/路徑」=> 「some_devise_controller」 結束

這裏是我的路線文件

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身份驗證工作,但當從「允許應用程序屏幕「紅寶石拋出...

未定義的方法`關閉?'對於零:NilClass

的ActiveSupport(3.1.0.rc8)LIB/active_support/whiny_nil.rb:48:在method_missing' /opt/local/lib/ruby/1.8/net/http.rb:1060:in請求」 法拉第(0.6.1)LIB /法拉第/適配器/ net_http.rb:51:在call' faraday (0.6.1) lib/faraday/request/url_encoded.rb:14:in呼叫 ' 法拉第(0.6.1)LIB /法拉第/ request.rb:88:在run' faraday (0.6.1) lib/faraday/request.rb:28:in運行' 法拉第(0.6.1)LIB /法拉第/ connection.rb:170:在run_request' oauth2 (0.4.1) lib/oauth2/client.rb:63:in請求」

。 ..

這是使用Rails 3.1.0rc8和ruby 1.9.2

回答

2

我剛剛完成我昨天omniauth登錄我的應用程序,使用完全相同的引導和軌道3.1最終

不知道你是你的路線確定,我的是這樣的:

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 

在我devise_for :users阻止我把登錄和註銷,因爲我使用OmniAuth沒有其他的身份

指南還最高審計機關的get '/users/auth/:provider'線應該在devise_scope :user

不知道這會解決你的問題,但至少我想指出這些點,這不適合在評論

+0

我想你可以回答我的問題。我也有在omniauth類似的問題http://stackoverflow.com/questions/13561140/i-am-using-rails-cast-omniauth-and-i-get-this-error# – regmiprem