1

アプリケーションを職場の Facebook アプリとして統合しています。ユーザーが facebook にログインしているかどうかを検出し、ログインしていない場合は認証を求められるようにしたいと考えています。

これまでのところ、facebook SDK とそれが提供するログイン機能をうまく使用できました。ただし、これにより、アプリケーションによって認証ポップアップ ウィンドウが作成され、ほとんどのブラウザーによってブロックされるため、優先タスクは、ポップアップを使用しないように認証ロジックを再実装することです。

Facebook ドキュメントのこのチュートリアルによると、ユーザー ステータス変更要求にイベント サブスクリプションを使用するか (ユーザーがログアウトしている場合は機能しませんでした)、アクセス トークンを取得することで実行できます。問題は、トークンがリクエストパラメーターとしてトップウィンドウに返されることです(ユーザー認証後にリターンURLとして指定したURL)。いくつかのクロスドメインおよびブラウザーの制限が存在するため、クライアント スクリプトを使用して値を取得することができず、行き詰まっています。

ここに関連する質問が寄せられており、共通の問題は、ほとんどのアプリが実行されていることですlocalhost。ただし、私たちのアプリの場合は、パブリック ドメインによって公開されているローカル Web サーバーにアプリをデプロイしましたが、クロスドメイン制限の問題がまだ残っています。これは、Facebook アプリの構成内でパブリック ドメイン名によって参照されています。ドメインが外部から完全にアクセス可能であることに、私は完全な自信を持っています。

一般的に、私たちのケースは、Facebook ユーザーが使用している間、アプリをホストしたいということです。おそらく、このアプローチは私たちの要件と互換性がないのでしょうか? この問題を回避するためにクロスドメイン通信を構成することは可能ですか? Facebookのログインポップアップを回避する他の方法はありますか?

4

1 に答える 1

3

まず第一に、最新のブラウザーのポップアップ ブロッカーのデフォルト設定は、ユーザーの操作なしで呼び出されたポップアップのみをブロックするようになっています。ページの読み込み時に FB.login を自動的に呼び出すと、ブロックされる可能性があります。しかし、「ここからログインしてください」というリンク/ボタンをユーザーに提供し、そのリンク/ボタンをクリックしたときにのみ FB.login を呼び出すと、ポップアップが表示され、ブロックされない可能性が高くなります。

そのようにしたくない場合は、サーバー側の認証フローを使用することもできます。同じウィンドウで発生する認証ダイアログにユーザーをリダイレクトするだけで、後でアプリに戻されます。

于 2012-07-25T12:06:40.103 に答える