OmniAuthを正しくcallbackさせる
先日、「TwitterでログインできるBBS」を、
Apache+(nginx+passenger)という環境にリリースしたのですが、
その認証に利用したのが「OmniAuth」でございます
https://github.com/intridea/omniauth
WEB+DB PRESSのvol.64にも記事があります(´・ω・)っ
- 作者: 柏木泰幸,松野紘明,林聖高,杉義宏,飯塚直,高橋征義,徳永拓之,Tehu(張惺),中島聡,おにたま
- 出版社/メーカー: 技術評論社
- 発売日: 2011/08/24
- メディア: 大型本
- 購入: 17人 クリック: 714回
- この商品を含むブログ (16件) を見る
Twitter/Facebook/OpenID等々の認証が、
同一のインターフェースで可能という、すばらしいものなのですが、
それに関する記事は山ほどあるのでそちらを見てもらうとして・・・
開発環境ではあっさり動いたのですが、問題は本番環境です
OmniAuthからTwitterの認証を呼ぶまではいいのですが、
TwitterからCallbackされる際、
バックエンドのポートつきで呼び出されてしまうのですΣ(゚Д゚)ガーン
つまり、「example.com/hoge/auth/twitter/callback」を呼んでほしいのですが、
「example.com:8888/hoge/auth/twitter/callback」に戻ろうとしてしまい、
アクセスができないという問題が出ました
しかも、最初に作ったRails3.1版のプロトタイプでは問題なかったのが、
正式に作り替えたRails3.0版だとポートがついてきてしまうのです
たぶん、中で呼んでいるメソッドの実装が変わったのでしょうけども・・・
どちらにせよ、「バックエンドのURL」に戻るのではなく、
「フロントのURL」に戻ってほしいのですが、
このやり方がわからなくてかなり悩みました(´-ω-) *1
結果的にはこちらに答えが
# in config/initializers/omniauth.rb OmniAuth.config.full_host = "http://example.com" # フロントのURL Rails.application.config.middleware.use OmniAuth::Builder do # Twitter認証 provider :twitter, YOUR_KEY, YOUR_SECRET end
これでOmniAuthで使うURLを強制できます(`・ω・´) b
元の記事を読むと、Procを渡してその結果を使うこともできるようです
で、何も渡されないと自身のURLから生成する・・・と
*1:どの記事も「開発環境で動かすところ」までしか書いてなくて、本番でこの問題にどう対処したのか書いた記事が見つからなかったという・・・