3

私たちのrorアプリの各顧客はサブドメインに基づいて提供され、彼らはfbappid、fbsecretid(顧客のfbアプリを強化します)を持っています。ユーザーの認証にはomniauth、omniauth-facebookを使用します。したがって、customer1.ourapp.comはappid fbapp_1のfbアプリを提供し、customer2.ourapp.comサーバーはappidfbapp_2のサービスを提供します。

Facebook戦略の初期化の通常の方法は、イニシャライザーに次の行を配置することです

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

サブドメインに基づいてAPP_ID、SECRETを設定する必要がありますが、初期化時にリクエストオブジェクトが利用できないようです。setup=>を使用してオプションの動的設定を調べましたが、omniauth-facebookはappid、appsecretの設定をサポートしていないようです。動的に。

リクエストのサブドメインに基づいて、omniauth-facebookのapp_idとapp_secretを動的に設定するにはどうすればよいですか?前もって感謝します

4

1 に答える 1

3

deviseを使用しているので、試してみてください

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'}
于 2012-04-20T05:36:17.667 に答える