2014-09-07 4 views
1

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

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

Ошибка проявляясь Facebook является «Настройка приложения не: Разработчики этого приложения не создали это приложение правильно для 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

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

«При тестировании приложения, поместите их в режим развития Это скрывает приложение полностью от всех пользователей, которые вы не санкционированных в App Dashboard для Обратите внимание, что когда ваше приложение находится в режиме разработки, вы не можете вызывать вызовы API от имени пользователей, которые не могут видеть ваше приложение ». Facebook App Security Guidelines

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

+0

Если я не ошибаюсь, это значит, что вы можете проверить, что связанные аккаунты регистрируются для приложения? Как включить возможность разрешить публике регистрироваться для моего приложения через Facebook? – user3155219

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

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