Ruby on Rails にて、Facebookアプリ外でのアクセスをFacebookページ内のアプリヘリダイレクトさせる処理を書いてみました。
before_filter :check_access_from_facebook
def check_access_from_facebook
redirect_to MyRailsApp::Application.config.facebook_app_url if params[:signed_request].nil?
end
Facebookアプリは、Facebookのサイト内でアクセスがあった場合、必ずリクエストパラメータに signed_request が存在します。
なので、これがない場合はFacebook外でのアクセスというように判断して、Facebookページ内のアプリへリダイレクトさせるようにしました。
signed_request から取得したパラメータに依存した実装になっていると、Facebook外で単独のWebアプリとして正常に動作しないので、今回はリダイレクトさせることで解決しました。
以上です。
【参考】
・Railsのcontrollerやviewの中で現在処理中のURLを知る方法: request.url - memo.yomukaku.net