0

Я получил письмо от facebook, что мое приложение rails использует v2.0 api, и оно будет устаревать. поэтому я обновил драгоценный камень, как это.ошибка omniauth-facebook только после версии api v2.2

- 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' 

Это сработало хорошо, но версия api facebook все еще была 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" 
} 

но это не сработало. log такой.

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 

Я понизил конфигурационную версию до версии 2.3, но это не сработало. от версии 2.2, он работает.

Вопрос мой.

  1. Почему omniauth-facebook не использует v2.6 при настройке по умолчанию?
  2. Как я могу решить эту проблему? Я искал подобные эры, но в моем случае журнал не отображает сообщения об ошибках точно. (OAuth2 :: Ошибка: фактически вакантная)

ответ

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 } 

 Смежные вопросы

  • Нет связанных вопросов^_^