我收到來自Facebook的電子郵件,表示我的rails應用程序正在使用v2.0 api,它將被棄用。所以我更新了這樣的寶石。只有當api版本已超過v2.2時,omniauth-facebook錯誤
- devise (3.5.6)
+ devise (4.2.0)
- oauth2 (1.1.0)
+ oauth2 (1.2.0)
omniauth-facebook (3.0.0)
omniauth-oauth2 (1.3.1)
因爲一些未解決的問題,我沒有將omniauth-oauth2版本升級。
之後,我更改了一些不推薦的視圖代碼。並更改我的配置並重新啓動服務器。
config.omniauth :facebook, APP_ID, APP_SECRET, scope: 'email', info_fields: 'email,name'
它運行良好,但facebook api版本仍然是v2.0。所以我搜索了一下,發現了這個。 https://github.com/mkdynamic/omniauth-facebook#api-version表示它的默認版本是v2.6,但我不知道它爲什麼仍然使用v2.0。無論如何,我改變了這樣的配置代碼。
config.omniauth :facebook, APP_ID, APP_SECRET, scope: 'email', info_fields: 'email,name', client_options: {
site: 'https://graph.facebook.com/v2.6',
authorize_url: "https://www.facebook.com/v2.6/dialog/oauth"
}
但它沒有工作。日誌就是這樣。
Started GET "https://stackoverflow.com/users/auth/facebook/callback?code=verylogcode&state=stateblabla" for 127.0.0.1 at 2016-07-26 22:52:03 +0900
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OAuth2::Error, :
{"access_token":"very_long_token_value","token_type":"bearer","expires_in":5160039}
Processing by OmniauthCallbacksController#failure as HTML
我降級了配置版本到v2.3,但它沒有奏效。 from v2.2,它的工作原理是。
我的問題是這樣的。
- 爲什麼omniauth-facebook在默認配置設置下不使用v2.6?
- 我該如何解決這個問題?我搜索了這種erros,但在我的情況下,日誌不會精確顯示錯誤消息。 (OAuth2 :: Error,:實際上是空的)