0

この質問は少し長文ですが、答えが多くの人に役立つと確信しています。必要なガイダンスがどこにも見つかりません。

Visual Studio 2012 ですぐに使えるプロジェクト テンプレートを使用して、ASP.net MVC 4 Web アプリケーションを作成しました。これにより、ユーザーがサインアップし、oAuth を使用して Facebook 資格情報で認証できる Web サイトが即座に提供されます。ここまでは順調ですね。

私のアプリケーションは、Facebook Javascript SDK と OpenGraph を使用して、ユーザーに代わってアクションを実行します。それもうまくいっています。

これが私が問題を抱えているシナリオです:-

  1. ユーザー (John) は、自分の FB プロフィールを使用してサインアップします
  2. John は、Facebook ログインを使用してアプリケーションにログインします。彼はすでに Facebook にログインしていたので、ログイン資格情報を再入力する必要はありませんでした。
  3. ジョンはブラウザを開いたままにし、アプリケーションからログアウトしません
  4. John の妻 (Jane) は新しいタブを開き、Facebook サイトに移動し、John を Facebook からログアウトさせ、彼女自身の Facebook 資格情報を使用してログインします。また、終了後もブラウザーを開いたままにします。
  5. ジョンは戻ってきて、私のアプリケーションを元の場所から使い続けています。彼のセッションが期限切れになっていないと仮定すると、彼はまだ私のアプリケーションで John として認証されていますが、アプリケーションが呼び出しを行ったり、javascript SDK を使用してアクションを実行したりすると、ログインしている Facebook ユーザー (現在は Jane) として認証されます。両方が私のアプリを承認したと仮定すると (両方とも私のアプリのアカウントを持っているため)、これは暗黙のうちに行われ、John のアクションが Jane の Facebook アカウントに投稿されます。

FB.api を使用するすべてのページで FB.getLoginStatus を呼び出していますが、ユーザーの変更は検出されません。response.authResponse.accessToken を保存して比較してみましたが、これはユーザーが変わっても変わりません。

私のアプリケーションが FB ユーザーが変更されたことを検出し、ログイン ページにリダイレクトするように、Facebook ユーザーの変更を処理する方法について、誰かがガイダンスを提供できますか?

ありがとう!

4

1 に答える 1

0

ログイン時に FB ユーザー ID を保存し、ページの読み込みごとに FB.getLoginStatus の応答オブジェクトのユーザー ID と比較することで、これを処理しています。それらが一致しない場合、強制的にログアウトします。

于 2013-12-06T14:15:02.830 に答える