簡體   English   中英

Rails 3-Omniauth路由錯誤,在本地但在我的服務器上不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM