Подтвердить что ты не робот

Используйте omniauth-facebook, когда для каждого запроса разные идентификаторы приложений и приложений.

omniauth-facebook README упоминает, как настроить его в инициализаторе и как устанавливать такие параметры, как scope только для запроса. Интересно, можно ли также установить идентификатор приложения и приложение для каждого запроса.

4b9b3361

Ответ 1

Вы можете сделать это:

На вашем omniauth.rb сделайте следующее:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook,:setup => true
end

Затем на вашем контроллере вы должны определить следующее:

def setup
 request.env['omniauth.strategy'].options[:client_id] = @site.facebook_key
 request.env['omniauth.strategy'].options[:client_secret] = @site.facebook_secret
 render :text => "Setup complete.", :status => 404
end

Конечно, вы должны добавить связанные маршруты на своих маршрутах. rb.

  #Facebook Omniauth routes
  match '/auth/facebook/callback' => 'session#authorize_callback'
  match '/auth/facebook/setup' => 'session#setup'

Удачи.

С уважением. Иван.

Ответ 2

Я использую devisecast (после этого railscast: http://railscasts.com/episodes/235-devise-and-omniauth-revised), но мне потребовалось некоторое время, чтобы понять, как реализовать решение Ivangrx. Это оказалось довольно легко. Здесь мой код:

# /config/initializers/devise.rb
config.omniauth :facebook, setup: true

# routes.rb
devise_scope :user do  
  #where omniauth_callback is the controller I made when following the Railscast
  get "users/auth/facebook/setup" => "omniauth_callbacks#setup"
end

# omniauth_callbacks_controller.rb
def setup
  request.env['omniauth.strategy'].options[:client_id] = @site.facebook_id
  request.env['omniauth.strategy'].options[:client_secret] = @site.facebook_key
  render :text => "Setup complete.", :status => 404
end

Спасибо за помощь в этом!

Ответ 3

Если вы используете программу, вы можете сделать это

config.omniauth  :facebook, :setup => lambda{
      current_app_secret = // Get current domain
      current_app_key = // Get config
      env['omniauth.strategy'].options[:client_id] = current_app_secret
      env['omniauth.strategy'].options[:client_secret] = current_app_key
    }