takecian

Diary

30 Dec 2013

Nginx(ELB) + Unicorn で Rails で OAuth 認証をするときのコールバックURL

Railsアプリ(Unicorn) の前段に Nginx を置くのが主流になりつつあるみたいですが何も指定しなかったら Unicorn で待ち受けてるホスト名で OAuth provider 側にコールバックURLを渡してしまうので Facebook など provider 側に「登録したCallback URL(domain)と違うよ」エラーが返ってきます。

#Nginx を使っていないくても ELB を使うようになったら同じ問題にぶつかると思う。

その場合は、config/initialize の devise.rb か omniauth.rb で、

[code lang="ruby"]
OmniAuth.config.full_host = 'http://hostname'
[/code]

を指定しておきます。コールバックURLはローカル環境や staging/production 環境で異なると思うので initializer の中で書いておくのがよさそうです。