Использование FacebookOmniauth в Rails 5

Я пытаюсь реализовать аутентификацию Facebook, и я застрял. Я точно следовал этому руководству

https://www.crondose.com/2016/12/guide-integrating-omniauth-rails-5-facebook-login-feature/

и получить эту ошибку

I, [2017-11-07T00:55:47.114884 #12099] INFO -- omniauth: (facebook) Инициирована фаза обратного вызова. E, [2017-11-07T00:55:47.489634 #12099] ОШИБКА -- omniauth: (facebook) Ошибка аутентификации! invalid_credentials: OAuth2::Error, :

Facebook API версии v2.10

Я использую ruby 2.4.0 и Rails 5.1.4


person Takuya    schedule 06.11.2017    source источник
comment
можешь сказать omniauth-facebook версию?   -  person Pardeep Dhingra    schedule 06.11.2017
comment
Спасибо, Пардип! Я не указал версию гема. Я просто поставил гем «omniauth-facebook», мне нужно указать?   -  person Takuya    schedule 07.11.2017
comment
Вы можете найти гем-версию в Gemfile.lock   -  person Pardeep Dhingra    schedule 07.11.2017
comment
@Takuya config.omniauth :facebook, ENV[FACEBOOK_KEY], ENV[FACEBOOK_SECRET], callback_url: #{ENV[domain]}/users/auth/facebook/callback, scope: 'email', token_params: {parse: :json} Попробуйте использовать этот код и обратите внимание на хэш token_params. Я также столкнулся с этой ошибкой и несколько дней пытался ее отладить. Я не смог найти какой-либо действительной причины ошибки, но добавление последнего параметра исправило это. Вы можете попробовать это и сообщить мне, решило ли это вашу проблему или нет.   -  person Aakash Gupta    schedule 10.11.2017


Ответы (1)


Скорее всего, вы получаете эту ошибку, потому что ваш идентификатор приложения или секрет приложения неверен. Убедитесь, что ваш инициализатор имеет правильные учетные данные Facebook API:

# config/initializers/devise.rb
config.omniauth :facebook, <your App Id>, <your App Secret>,
  callback_url: "http://localhost:3000/users/auth/facebook/callback"

Еще один совет: Facebook теперь требует, чтобы вы указали поля, которые вы хотите вернуть из Facebook. Другими словами, если вам нужен адрес электронной почты пользователя Facebook, вам нужно специально его запросить. Раньше он возвращался по умолчанию. Вы можете запрашивать поля, используя параметр scope в конфигурации Devise.

Например, чтобы запросить адрес электронной почты и имя пользователя Facebook, сделайте следующее:

# config/initializers/devise.rb
config.omniauth :facebook, <your App Id>, <your App Secret>,
  callback_url: "http://localhost:3000/users/auth/facebook/callback",
  scope: 'email,name'
person Tom Aranda    schedule 06.11.2017
comment
спасибо Том! Первый — это «config.omniauth:facebook, ‹your App ID›, ‹your App Secret›», верно? Я уверен, что это правильно. и второй, который я тоже пробовал, и тоже не сработал, другой совет,,,? - person Takuya; 07.11.2017
comment
Просто уточню, что <your App Id> и <your App Secret> должны быть учетными данными, которые вы получаете от Facebook. Это будет случайная строка символов. dkjfsdljfiowfjwejf43j например. - person Tom Aranda; 07.11.2017