パーフェクトruby on railsでイベントアプリを作って、それをherokuにデプロイしたら、ローカルでは動いていたTwitterログインが動かなくなりました。なかなか解決するまで時間がかかったのでメモ。
http://qiita.com/hirokishirai/items/5a43977a38ecd922bfb9
この辺の記事を読んでみてもダメだったら、環境変数が原因かもしれません。
#1. herokuに環境変数が設定されていなかった
結論から言うと、どうやらこれが原因らしいです。環境変数は"config/secrets.yml"に書いてあります。
(yourから始まる部分は、各自で異なります。念のため。)
secrets.yml
default_twitter: &default_twitter
twitter_api_key: 'your_twitter_api_key'
twitter_api_secret: 'your_twitter_api_secret'
development:
secret_key_base: your_secret_key_base
<<: *default_twitter
test:
secret_key_base: your_secret_key_base
<<: *default_twitter
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
twitter_api_key: <%= ENV["TWITTER_CONSUMER_KEY"] %>
twitter_api_secret: <%= ENV["TWITTER_CONSUMER_SECRET"] %>
一番下の、本番環境で設定される環境変数
secrets.yml
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
twitter_api_key: <%= ENV["TWITTER_CONSUMER_KEY"] %>
twitter_api_secret: <%= ENV["TWITTER_CONSUMER_SECRET"] %>
を、herokuに登録します。
#2. heroku に環境変数を登録する
簡単です。
アプリケーションのある階層まで移動して、以下のコマンドを打ちます。
$ heroku config:add TWITTER_CONSUMER_KEY="your_twitter_api_key"
$ heroku config:add TWITTER_CONSUMER_SECRET="your_twitter_api_secret"
以上です。念のため、以下のコマンドを打ってherokuに環境変数が追加されていることを確認しましょう。
$ heroku config