7

私は Facebook 認証の初心者で、リダイレクトの問題に悩まされています。アプリを Rails 3.2.6 で実装し、omniauth-facebook 1.4.0 を使用して Facebook と統合しました。Web サイトの「Facebook でサインイン」は機能しますが、キャンバス認証が期待どおりに機能しません。

期待:

  1. ユーザーが Facebook で私の Web アプリを見つけ、ログイン ダイアログに同意してアプリを起動します。
  2. ユーザーは、Facebook キャンバス iframe の外部ではなく、Facebook のキャンバス ページのアプリにリダイレクトされます。

実結果:

ユーザー認証は機能しますが、アプリ ページが iframe の外にリダイレクトされます。

Facebook アプリケーションの設定

Facebookアプリの設定は以下の通りです。キャンバス URL は「/auth/facebook/」として設定され、ユーザーをすぐに認証します。(無効なドメインを好まないようにスペースを追加しました)

Facebook ログイン サイト URL のある Web サイト: http: //localhost:3000/

キャンバス URL: http: //localhost:3000/auth/facebook/

omn​​iauth.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

前もって感謝します!

4

1 に答える 1

1

これを修正する簡単な方法は、ユーザーがフレーム内にいるかどうかを検出し、そうでない場合は Facebook にバウンスすることです。次の JavaScript を使用して、Facebook アプリでこれを行います。

<script type="text/javascript">
if ( top === self ) {
    window.top.location = '{fb_canvas_url}';
}
</script>
于 2013-02-19T14:12:24.423 に答える