Методы обратного вызова omniauth-facebook вызывают ошибку установки приложения Facebook не

Я пытаюсь реализовать аутентификацию Facebook в своем приложении Rails 4.0.1, используя гем omniauth-facebook. Это руководство, которое я использую, чтобы помочь мне в этом, https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

Я следовал всем инструкциям, и я получаю ошибку на Facebook. Я думаю, что ошибка исходит от одного из методов, который обрабатывает обратный вызов Facebook omniauth.

Facebook отображает ошибку "App Not Setup: разработчики этого приложения неправильно настроили это приложение для входа в Facebook"

omniauth_callbacks_controller.rb

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

user.rb

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :confirmable,
     :omniauthable, :omniauth_providers => [:facebook]

def self.new_with_session(params, session)
   super.tap do |user|
      if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
        user.email = data["email"] if user.email.blank?
      end
    end
 end

def self.from_omniauth(auth)
  where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
    user.email = auth.info.email
    user.password = Devise.friendly_token[0,20]
    user.profile_name = auth.info.name   # assuming the user model has a name
  end
end


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

end

Когда я впервые закончил руководство со страницы обзора OmniAuth, оно работало. Я зарегистрировался для моей заявки с моим личным Facebook. Моя учетная запись успешно входит в систему. Когда я начал регистрировать другие учетные записи Facebook, он сломался, и я получил ошибку "App Not Setup".

Заранее спасибо, любая помощь очень ценится.

1 ответ

Мы столкнулись с той же проблемой и нашли ответ здесь:

"При тестировании ваших приложений переведите их в режим разработки. Это полностью скрывает ваше приложение от всех пользователей, которые не авторизованы на панели инструментов приложения для просмотра приложения, для ролей, описанных ниже. Обратите внимание, что когда ваше приложение находится в режиме разработки вы не можете вызывать какие-либо вызовы API от имени пользователей, которые не видят ваше приложение." Правила безопасности приложения Facebook

Решение состоит в том, чтобы добавить другие учетные записи, которые вы хотите проверить как администраторы, разработчики или тестеры, перейдя на панель разработчиков Facebook и добавив их в раздел Роли.

Другие вопросы по тегам