私は Facebook 認証の初心者で、リダイレクトの問題に悩まされています。アプリを Rails 3.2.6 で実装し、omniauth-facebook 1.4.0 を使用して Facebook と統合しました。Web サイトの「Facebook でサインイン」は機能しますが、キャンバス認証が期待どおりに機能しません。
期待:
- ユーザーが Facebook で私の Web アプリを見つけ、ログイン ダイアログに同意してアプリを起動します。
- ユーザーは、Facebook キャンバス iframe の外部ではなく、Facebook のキャンバス ページのアプリにリダイレクトされます。
実結果:
ユーザー認証は機能しますが、アプリ ページが iframe の外にリダイレクトされます。
Facebook アプリケーションの設定
Facebookアプリの設定は以下の通りです。キャンバス URL は「/auth/facebook/」として設定され、ユーザーをすぐに認証します。(無効なドメインを好まないようにスペースを追加しました)
Facebook ログイン サイト URL のある Web サイト: http: //localhost:3000/
キャンバス URL: http: //localhost:3000/auth/facebook/
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, FB_APP_ID, FB_APP_SECRET, {:image_size => 'large', :iframe => true, :client_options => {:ssl => {:ca_file => Rails.root.join('lib/assets/cacert.pem').to_s}}}
end
sessions_controller.rb
class SessionsController < ApplicationController def create
auth = Auth.from_omniauth(env["omniauth.auth"])
session[:user_id] = auth.id
redirect_to root_url end
def destroy
session[:user_id] = nil
redirect_to root_url end end
前もって感謝します!