[英]Rails 3 — Omniauth routing error, works on local but not on my server
我正在嘗試使用Omniauth允許用戶使用Facebook登錄到我的Rails應用程序。 在本地,omniauth使用以下鏈接自動將瀏覽器重定向到Facebook進行身份驗證:
<%= link_to "Sign in with Facebook", "/auth/facebook" %>
它按預期重定向(沒有回調錯誤),然后我可以注銷。
當我嘗試將應用程序上載到服務器時,會發生此問題。 由於某種原因,Omniauth無法啟動,並且不執行重定向。 相反,它只是將瀏覽器指向我的應用程序(http://sharedchecklist.com/auth/facebook)中不存在的目錄,並吐出此錯誤:
Routing Error
No route matches "/auth/facebook"
在過去的幾個小時中,我做了很多搜索,以試圖找出問題所在。 我已經確保將網站和畫布URL更改為我的應用程序的地址。 回調不是問題。
就像沒有omniauth一樣……
有人遇到過這個問題嗎? 我對Rails相當陌生,但是在解決所有問題之前,我已經能夠解決所有問題。
如果該網址有幫助,請訪問以下網址: http : //sharedchecklist.com/
感謝您提供的任何幫助。
如果要在本地主機上測試並保持生產環境正常運行:
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
,您應該可以通過新應用登錄。
您需要告訴Facebook重定向到的位置。 如果它在開發中有效,則可能將站點URL設置為“ http:// localhost:3000”。 將其更改為“ http://sharedchecklist.com”,它將起作用。 當然,它將破壞開發。 因此,我為測試創建了一個新的“ Test” Facebook應用程序,該應用程序始終重定向到localhost。
如果缺少config / initializers / omniauth.rb,則會發生這種情況。
我在忽略列表中有該文件,並且有一個示例文件omniauth.rb.sample。 我忘了創建omniauth.rb文件,但遇到了同樣的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.