0

我有一个 ASP.NET MVC4 Web 应用程序,我想使用 Facebook 对用户进行身份验证。

我的计划是让用户在 Facebook 上“注册”,然后使用它登录。

现在,当用户访问该站点并使用我设置的 Facebook 登录按钮登录时,这很好,该按钮通过 /Account/FacebookLogin 操作进行。在该操作中,我可以获取 Auth Token 并根据 SQL 数据库对其进行检查,然后使用我在数据库中存储的所有额外字段/信息对用户进行身份验证(这是一个基于网络的游戏,因此角色名称等)......

现在,如果用户访问我的网站并且他们已经登录到 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 身份。您现在可能想要为该身份创建一个用户帐户。一旦该用户拥有一个帐户,那么您需要让该用户通过您的应用程序验证他们自己(如果您希望将自己绑定到 Facebook,您可以使用 Facebook 身份来执行此操作)。然后,您可以授权该用户在您的应用程序中执行某些操作。

在 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 回答