6

アプリでFacebookを介してサインオンできるようにするために、deviseでomniauthを使用しています。

私のdevise.rbファイルには次の行があります

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

Facebook には 2 つのアプリがあります。1 つはライブ URL を指し、もう 1 つは開発 URL を指しています。

devise rb ファイルに 2 つの個別の 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 ファイルでそれを参照するにはどうすればよいですか?

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 に答える