6

我正在使用带有设计的omniauth,以允许在我的应用程序中通过Facebook登录。

我的 devise.rb 文件有以下行

config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET' 

我在 facebook 上有 2 个应用程序,一个指向我的 live url,另一个指向我的 dev url。

如何将两个单独的omniauth 配置添加到devise rb 文件中?

就像是 -

if ENV['RAILS_ENV'] = "production"
    config.omniauth :facebook, 'MY_LIVE_APP_ID', 'MY_LIVE_APP_SECRET'  
else
    config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET' 
end

更重要的是,我应该把它放在 devise.tb 文件中还是应该将它分离到我的 production.rb 和 devleopment.rb 文件中?如果是这样,我如何在我的 devise.rb 文件中引用它?

4

1 回答 1

11

我的方法是将它们存储在 yaml 文件中。我叫我的config/api_keys.yml

defaults: &defaults
  twitter:
    api_key: "KEY"
    api_secret: "SECRET"
  facebook:
    api_key: "KEY"
    api_secret: "SECRET"

development:
  <<: *defaults

test:
  <<: *defaults

production:
  twitter:
    api_key: "KEY2"
    api_secret: "SECRET2"
  facebook:
    api_key: "KEY2"
    api_secret: "SECRET2"

然后在我的devise.rb文件中我这样做:

API_KEYS = YAML::load_file("#{Rails.root}/config/api_keys.yml")[Rails.env]
config.omniauth :facebook , API_KEYS['facebook']['api_key'], API_KEYS['facebook']['api_secret']
config.omniauth :twitter , API_KEYS['twitter']['api_key'], API_KEYS['twitter']['api_secret']

作为一种好的做法,您可能不应该将生产 API 密钥存储在版本控制中的此文件中。您应该将其存储在服务器上并在部署脚本中对其进行符号链接,就像您将database.yml

于 2012-07-23T19:34:17.880 回答