我正在使用omniauth,设计允许在我的应用程序中通过Facebook登录。
我的devise.rb文件包含以下行
config.omniauth :facebook, 'MY_DEV_APP_ID', 'MY_DEV_APP_SECRET'
我在facebook上有2个应用程序,一个指向我的实时网址和另一个是我的开发网址。
如何在devise rb文件中添加两个单独的omniauth配置?
之类的东西 -
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文件中引用它?
答案 0 :(得分: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