2011-05-12 81 views
3

我正在使用omniauth在我的導軌應用程序,我有facebook和twitter按鈕的標誌,當我把facebook放在網站提交localhost:3000,所有工作,但是當我上傳網站到heroku並更改網站的網址到sitename.heroku.com,twiiter登錄按鈕工作,但Facebook按鈕不工作...omniauth與臉書不工作在生產

+1

我認爲你已經將Facebook應用程序設置從localhost:3000更改爲Heroku站點的實際地址?您不能在本地測試和公共生產中使用相同的設置。 – 2011-05-12 12:48:05

+0

我不使用相同的設置,我已經從localhost:3000更改Facebook應用程序設置到我的應用程序heroku地址 – gal 2011-05-12 12:57:51

+0

*地址.................... – gal 2011-05-12 12:58:15

回答

9

您可能需要給我們更多信息(你是什麼意思,Facebook按鈕不工作?你是否收到錯誤信息?如果是,什麼?你的日誌說什麼?)

但是,這是你的問題有一個很好的機會:有一個使用omniauth facebook authentic的已知問題關於heroku。您需要在config/initializers/omniauth.rb文件中添加對SSL證書文件的明確引用。改變你的Facebook的配置線,包括像這樣的「client_options」哈希:

provider :facebook, 'YOUR_APP_ID', 'YOUR_SECRET_KEY', 
      {:scope => 'PERMISSION_1, PERMISSION_2, PERMISSION_3...', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}} 
3

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

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,你應該可以通過你的新應用程序登錄。