OmniAuth + Facebook + iframe で画面遷移がおかしい件

on 2011/11/07 - -

OmniAuth を使って Facebook の認証まわりを実装した場合、:iframe => true をつけないと iframe 内でも Go to Facebook リンクの画面が表示されてしまう。

# もう Facebook にいるのですぐに認可画面を表示してほしい、という話

こんな感じで :iframe => true を追加してあげればよさげ。


config/initializers/oa-oauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook , FB_APP_ID, FB_APP_SECRET, :scope => 'status_update, publish_stream', :iframe => true
end




あと OmniAuth を使った場合、認可完了後のリダイレクト先が iframe 内のバックエンドのサーバー(僕の場合は Heroku )に直に向いてしまって、Facebook から別のサイトへ移動するという動きになってしまう。

OmniAuth.config.full_host を指定してあげればいいとかこのへんに書いてあるけど、Facebook では API の呼び出し元サイトの URL が事前登録してあるバックエンド( Heroku )の URL と一致している必要があるので、そもそも OmniAuth.config.full_host を Facebook アプリの URL にすることができないです。

# OmniAuth.config.full_host に Facebook のアプリの URL を指定すればよさそうだけど、API の呼び出しがそもそもできなくなる、という話

しょうがないので認可完了後にアプリページ全体をリロードするよう実装しました。ださいけど。


app/controller/session_controller.rb
redirect_to "http://apps.facebook.com/XXXXXXXXXXXXXX/"



No comments :