0

facebookから、私のレールアプリがv2.0 apiを使用していて、それは廃止予定です。私はこのような宝石を更新しました。apiバージョンがv2.2を超えている場合のみomniauth-facebookエラーが発生する

いくつかの未解決の問題のため、私はomniauth-oauth2をバージョンアップしませんでした。

その後、廃止予定のビューコードを変更します。私の設定を変更し、サーバーを再起動します。

config.omniauth :facebook, APP_ID, APP_SECRET, scope: 'email', info_fields: 'email,name' 

facebook apiのバージョンはまだv2.0でした。私はgoogledとこれを見つけた。 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にダウングレードしましたが、動作しませんでした。 v2.2からは、が動作します。

私の質問はこれです。

  1. omniauth-facebookはデフォルト設定でv2.6を使用しないのはなぜですか?
  2. どうすればこの問題を解決できますか?私はこの種のエラーを検出しましたが、私の場合、ログにエラーメッセージが正確に表示されません。 (OAuth2 :: Error、:実際に空いている

答えて

3

私は答えを見つけました。 https://github.com/mkdynamic/omniauth-facebook/issues/204

私はこの投稿を前に見ましたが、私はそれを見落としました。 解決策はこのように設定するにはtoken_params: { parse: :json }を追加することです。

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" 
}, token_params: { parse: :json } 
関連する問題