0

ASP.NET MVC4 Web アプリケーションがあり、Facebook を使用してユーザーを認証したいと考えています。

私の計画は、ユーザーが Facebook で「サインアップ」してから、それを使用してログインすることです。

これで、ユーザーがサイトにアクセスして、設定した Facebook ログイン ボタンを使用してログインしたときに問題がなくなりました。このボタンは /Account/FacebookLogin アクションを経由します。そのアクションで、認証トークンを取得し、SQL データベースと照合して、データベースに保存されているすべての追加フィールド/情報を使用してユーザーを認証できます (これは Web ベースのゲームなので、キャラクター名など)...

ここで、ユーザーが私のサイトに来て、すでに Facebook にログインしている場合、明らかに /Account/FacebookLogin アクションを実行しません...

FB.getLoginStatus(function (response) {
        if (response.status === 'connected') {
            var accessToken = response.authResponse.accessToken;
            //alert("User is logged in");
        }
        else if (response.status === 'not_authorized') {
            //alert("User is not authorised");
        }
        else {
            //alert("User is not connected to Facebook");
        }

    });

私の質問は...「接続されている場合」コードで、ユーザーを無限ループに送ることなくユーザーを承認するにはどうすればよいですか? /Account/FacebookLogin アクションにリダイレクトして、認証トークンなどを渡そうとしましたが、すべてのページで getLoginStatus コールバックが呼び出されるため、無限ループに陥ります。

4

1 に答える 1

0

Facebook は、誰かの Facebook ID へのアクセスをあなたに許可しました。ここで、その ID のユーザー アカウントを作成することをお勧めします。そのユーザーがアカウントを取得したら、ユーザーにアプリケーションで自分自身を認証させる必要があります (自分自身を Facebook に結び付けたい場合は、Facebook ID を使用してこれを行うことができます)。次に、そのユーザーがアプリケーション内で特定のアクションを実行することを承認できます。

MVC のコンテキストでは、フォーム認証トークンを使用して非常に簡単に発行できます。

var username = response.authResponse.name; // <- check the syntax on this
FormsAuthentication.SetAuthCookie(username, true);
return this.RedirectToAction("Index", "AuthorizedUsersOnlyController");
于 2012-12-17T10:27:00.567 に答える