2012-04-19 3 views
3

Каждый клиент в нашем приложении ror работает на основе субдомена, и у них есть fbappid, fbsecretid (который обеспечивает приложение для пользователей fb). Мы используем omniauth, omniauth-facebook для аутентификации пользователей. так customer1.ourapp.com служит приложение FB с APPID fbapp_1 и customer2.ourapp.com сервера с APPID fbapp_2Настройте appid, appsecret из динамического омнаута-facebook, основанного на субдомене

нормальным способом инициализации стратегии facebook ставят следующую строку в инициализаторе

config.omniauth :facebook, APP_ID, SECRET, {:scope => 'publish_stream} 

Нам нужно установить APP_ID, SECRET на основе субдомена, но похоже, что объект запроса не доступен в момент инициализации Я изучил динамическую настройку параметров с помощью setup =>, но omniauth-facebook, похоже, не поддерживает настройку appid , appsecret динамически.

Как мы устанавливаем app_id и app_secret из omniauth-facebook динамически на основе субдомена запроса? спасибо заранее

ответ

3

Поскольку вы используете завещать, попробуйте

config.omniauth  :facebook, :setup => lambda{ 
     current_domain = // Get current domain 
     config = // Get config 
     env['omniauth.strategy'].options[:client_id] = config[current_domain][Rails.env]["app_id"] 
     env['omniauth.strategy'].options[:client_secret] = config[current_domain][Rails.env]["app_secret"] 
    } 

http://webcache.googleusercontent.com/search?q=cache:zmBqDAomJ84J:blog.cedricbousmanne.com/+&cd=2&hl=en&ct=clnk обеспечивает решение без завещанию, только с OmniAuth

[редактировать] Выписка из рабочего кода

config.omniauth :facebook, {:setup => lambda{|env| 
    env['omniauth.strategy'].options[:client_id] = $institute_tenant.fbappid 
    env['omniauth.strategy'].options[:client_secret] = $institute_tenant.fbappsecret 
}, :auth_type => 'https', :scope => 'email'} 
+0

Это не работает, config.omniauth: facebook ожидает еще два аргумента (разработка 1.4.9) –

+0

@Victor надеюсь, что это ответит на ваш вопрос? – PrasannaK

+0

PrasannaK, спасибо за обновление, я посмотрю, если это сработает. –

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