omn​​iauth 0.2.6具有多个域名

时间:2011-12-11 14:49:34

标签: ruby-on-rails-3

我正在为我的网络应用程序使用不同的域名(www.example.heroku.com,www.example2.com和www.example3.com)。身份验证是使用Omniauth 0.2.6

如果我希望我的用户通过Facebook进行身份验证,我需要为每个域名使用不同的Facebook应用帐户,以便使用不同的应用ID和密钥。

在omniauth初始化程序中定义应用程序ID和密钥时(提供者:facebook,“APP_ID”,“APP_SECRET”),我该怎么做:

  • 定义多个应用ID /密钥

  • 或有条件地将id /键定义到当前域名

我一直在努力,但没有成功......

1 个答案:

答案 0 :(得分:2)

在Omniauth 1.1.0的setup phase

中,此设置已更改

您现在必须在omniauth.rb

中进行设置
provider_keys = YAML.load_file(File.join(Rails.root, 'config', 'provider_keys.yml'))

SETUP_PROC = lambda do |env| 
    env['omniauth.strategy'].options[:client_id]      = provider_keys[Rails.env]['facebook'][server_name]['consumer_key'] 
    env['omniauth.strategy'].options[:client_secret]  = provider_keys[Rails.env]['facebook'][server_name]['consumer_secret']
end

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, setup: SETUP_PROC
end

并且您的provider_keys.yml看起来像这样

development:
  facebook:
    www.example.heroku.com:
      consumer_key: 'xxxxxxxx'
      consumer_secret: 'xxxxxxxx'
    www.example.com:
      consumer_key: 'xxxxxxx'
      consumer_secret: 'xxxxxxx'