2012-12-21 38 views
1

我已按照Devise wiki上的說明登錄Facebook帳戶。授權Facebook上的應用程序後「無效憑證」(使用Devise,omniauth:facebook)

它的工作,主要是。

問題是,我將登錄(user_omniauth_authorize_path(:facebook)),這會將我帶到Facebook,點擊「授權」按鈕。然後我被重定向到我的應用程序,就像我應該一樣,但是不是擊中了我的回調函數,而是在flash[:notice](「無法授權您從Facebook授權給您,因爲」憑證無效「。後端我看到:

(facebook) Callback phase initiated. 
(facebook) Authentication failure! invalid_credentials: OAuth2::Error, : {"error":{"message":"Code was invalid or expired. Session is invalid. This could be because the application was uninstalled after the session was created.","type":"OAuthException","code":100}} 

後,我得到指着Started GET "/accounts/auth/facebook/callback?code=XXX,但不是在行動(facebook)加工時,它會發送到Users::OmniauthCallbacksController#failure

但是,奇怪的是,當我看到我的Facebook帳戶授權了哪些應用程序時,我的應用程序就在那裏。而下一次,我點擊登錄鏈接,我立即得到授權(不要重定向到FB),並通過我的facebook行動登錄,沒有問題。

任何想法,爲什麼會發生這種情況,或調試提示?他們會很感激。謝謝!

編輯:我omniauth_callbacks_controller.rb

+0

告訴我們你是如何定義你的應用程序中的facebook key/id和secret的。在devise.rb文件中?在omniauth.rb文件中?使用ENV變量?直接在文件中? – Ashitaka

+0

它在'devise.rb'初始化中,如教程中所述。正如我所說,該應用程序實際上已被授權(它在Facebook上的授權應用程序列表中顯示,並且在下一次點擊'user_omniauth_authorize_path(:facebook)'鏈接時,會調用'facebook'回調。令人沮喪的 – Isaac

+0

哦,我現在看到了,確實令人沮喪。你的Facebook應用的設置是什麼?在開發中,你只需要設置你的站點URL爲「http:// localhost:3000 /'。你的路線?''/ accounts/auth/facebook/callback?code = XXX'似乎是一個奇怪的url回調,不應該是'/ users/auth/facebook/callback'嗎? – Ashitaka

回答

4

原來,Facebook無法正常工作。我今天早上登錄了很好,沒有更改任何代碼。壯觀。

讓這給你一個教訓:有時,這不是你。

0

可能與此有關:https://developers.facebook.com/bugs/419168608133421?browse=search_50c9f80c2dcb35786620246

我必須說,我們使用設計和Facebook的OAuth和我在我們的應用程序從來沒有見過這個。你能發佈你的OmniauthCallbacksController的代碼片段嗎?

+0

我看到上面的鏈接,但我認爲它不同?它看起來好像該應用程序正在獲得授權?我將發佈上面的回調控制器的完整代碼(在要點中) – Isaac

相關問題