2011-02-10 25 views
1

我試圖使用Omniauth允許用戶使用Facebook登錄到我的Rails應用程序。在當地,omniauth自動將瀏覽器重定向到Facebook的使用下面的鏈接驗證:Rails 3 - Omniauth路由錯誤,適用於本地但不適用於我的服務器

<%= link_to "Sign in with Facebook", "/auth/facebook" %>

它重定向早在預期(沒有回調錯誤),我就能夠退出。

當我嘗試將我的應用程序上傳到我的服務器時,會發生此問題。出於某種原因,Omniauth並沒有踢入,也沒有做重定向。相反,它只是指向瀏覽器一個不存在的目錄在我的應用程序(http://sharedchecklist.com/auth/facebook),並吐出了這個錯誤:

Routing Error

No route matches "/auth/facebook"

我在過去的幾個小時裏,我做了大量的搜索,試圖找出問題的癥結所在。我已經確保將網站和畫布網址更改爲我的應用的地址。這不是回調問題。

這幾乎就像omniauth是不是有...

有沒有人遇到過這個問題?我對軌道相當陌生,但我已經能夠解決任何問題,之前讓這個問題變得最令人沮喪。

如果url會有所幫助,那就是:http://sharedchecklist.com/

感謝您可以提供任何幫助。

回答

0

你需要告訴Facebook在哪裏重定向到。如果它在開發中工作,則可能會將您的網站url設置爲「http:// localhost:3000」。將其更改爲「http://sharedchecklist.com」,它將起作用。當然,它會在開發中突破。因此,我爲我的測試創建了一個新的「測試」Facebook應用程序,該程序總是重定向到本地主機。

+0

感謝您的回答傑森和拉杜。我能解決這個問題。事實證明,這是我的服務器(它顯示寶石已安裝,但實際上不是?)的問題。無論如何,這個問題已經得到解決。 –

0

這似乎發生如果配置/初始化/ omniauth.rb丟失。

我把這個文件放在忽略列表和一個樣例文件中作爲omniauth.rb.sample。我忘了創建omniauth.rb文件,我得到了同樣的錯誤。

0

如果你想測試本地主機上,並保持您的生產環境中工作:

1只爲開發目的創建一個新的Facebook應用程序

2-網站URL字段設置爲:http://localhost:3000/

3-接下來編輯/config/initializers/omniauth.rb文件以匹配以下內容:

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    if Rails.env.development? 
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 
    provider :facebook, 'DEV_APP_ID', 'DEV_APP_SEVRET' 
    else 
    provider :facebook, 'DEPLOY_APP_ID', 'DEPLOY_APP_SECRET' 
    end 
end 

最後重新啓動rails server,你應該可以通過你的新應用程序登錄。

相關問題