Rails: не удалось аутентифицировать вас из Facebook, потому что недействительные учетные данные

Я интегрировал omniauth-facebook, используя https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview. Но я получаю ошибку:

Could not authenticate you from Facebook because "Invalid credentials".

У меня установлено устройство. Когда я нажимаю на ссылку входа в facebook, она перенаправляет меня на страницу входа в facebook. Когда я ввожу свои данные, он возвращается к знаку разработки и выдает вышеуказанную ошибку. Я проверил решение на предмет «Неверные учетные данные» на https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview, а в заголовке моего приложения указан тип приложения = Web. Не понял, почему не работает.

Также мое приложение работает, но еще не одобрено на Facebook. Но я не думаю, что это связано с этой ошибкой. Вот что я сделал для omniauth-facebook:

Gemfile содержит:

gem 'omniauth'
gem 'omniauth-facebook', '1.4.0'

В пользовательской модели добавлено:

devise :omniauthable, :omniauth_providers => [:facebook]
attr_accessible :provider, :uid

  def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
    user = User.where(:provider => auth.provider, :uid => auth.uid).first
    unless user
    user = User.create(name:auth.extra.raw_info.name,
                       provider:auth.provider,
                       uid:auth.uid,
                       email:auth.info.email,
                       password:Devise.friendly_token[0,20]
                      )
   end
 user
 end

разработка.rb

require "omniauth-facebook"
config.omniauth :facebook, "APP_ID", "APP_SECRET", :scope => "offline_access, email" 

Ссылка для входа в facebook:

<%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %>

маршрут.rb:

devise_for :user, :controllers => { :omniauth_callbacks => "omniauth_callbacks" }

Омниаутентичный контроллер:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def facebook
    @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
    if @user.persisted?
      sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
      set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
    else
      session["devise.facebook_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    end
   end
 end

Кто-нибудь может помочь в этом?


person user2206724    schedule 23.04.2013    source источник
comment
Я не уверен в этом, но может быть, у вас есть пробел перед адресом электронной почты в вашей области omniauth? У меня была такая же ошибка из-за опечатки   -  person golfadas    schedule 21.08.2013
comment
Это было помечено как дубликат идентичного вопроса, который вы разместили, в котором было больше информации. В будущем, если у вас будет дополнительная информация для добавления к вопросу, отредактируйте существующий вопрос, а не создавайте новый.   -  person mindriot    schedule 02.09.2014


Ответы (1)


Попробуйте очистить куки браузера. иногда omniauth не работает только потому, что вам нужно удалить файлы cookie браузера.

Другое дело, что версия неверна.

Проблема, похоже, в зависимостях. В 1.4.0 требуется omniauth-oauth2 1.0.3, а в 1.4.1 — omniauth-oauth 1.1.x.

как показано здесь: https://github.com/intridea/omniauth/issues/276

person Kees Sonnema    schedule 23.04.2013
comment
версии: omniauth-oauth2 (1.0.2) для omniauth-facebook (1.4.0). Это нормально или должно быть 1.0.3? - person user2206724; 23.04.2013
comment
просто постарайтесь обновить все как можно выше. это может сработать. но я не уверен. - person Kees Sonnema; 23.04.2013
comment
очистил файлы cookie и попытался выполнить обновление с помощью sudo gem install omniauth-oauth2 --version 1.0.3. Но это все еще 1.0.2. Получение той же ошибки. - person user2206724; 23.04.2013
comment
самая новая версия omniauth — 1.1.4, поместите это в свой gemfile: gem omniauth, ~› 1.1.4 и запустите установку пакета. - person Kees Sonnema; 23.04.2013
comment
самая новая версия omniauth-oauth — 1.0.1, поместите это в свой gemfile: gem omniauth-oauth, ~› 1.0.1 и запустите установку пакета. - person Kees Sonnema; 23.04.2013
comment
gem omniauth-oauth, ~› 1.0.1 или gem omniauth-oauth2, ~› 1.0.1 - person user2206724; 23.04.2013
comment
жаль забыть те. я пропустил 2. поместите это в свой gemfile: gem omniauth-oauth2, ~› 1.1.1 это текущая версия: D, которая должна работать. - person Kees Sonnema; 23.04.2013
comment
давайте продолжим это обсуждение в чате - person user2206724; 23.04.2013
comment
(facebook) Инициирована фаза обратного вызова. (facebook) Ошибка аутентификации! invalid_credentials: OAuth2::Error, : {error:{message:Этот код авторизации был использован.,type:OAuthException,code:100}} Обработка OmniauthCallbacksController#failure - person user2206724; 23.04.2013