我已按照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
告訴我們你是如何定義你的應用程序中的facebook key/id和secret的。在devise.rb文件中?在omniauth.rb文件中?使用ENV變量?直接在文件中? – Ashitaka
它在'devise.rb'初始化中,如教程中所述。正如我所說,該應用程序實際上已被授權(它在Facebook上的授權應用程序列表中顯示,並且在下一次點擊'user_omniauth_authorize_path(:facebook)'鏈接時,會調用'facebook'回調。令人沮喪的 – Isaac
哦,我現在看到了,確實令人沮喪。你的Facebook應用的設置是什麼?在開發中,你只需要設置你的站點URL爲「http:// localhost:3000 /'。你的路線?''/ accounts/auth/facebook/callback?code = XXX'似乎是一個奇怪的url回調,不應該是'/ users/auth/facebook/callback'嗎? – Ashitaka