1

我正在研究 asp.net mvc。我正在尝试为我的 MVC 应用程序实现 Facebook 集成。在这里,我选择了 Facebook 登录的 OAuth 机制。这是我的标记,

<a href="/Account/FacebookLogin">Login With Facebook</a>

这是我的行动,

 public ActionResult FacebookLogin()
 {
            oAuthFacebook oauth = new oAuthFacebook();
            return new RedirectResult(oauth.AuthorizationLinkGet());
 }

我的回调网址是/Home/FBLogin

public ActionResult FBLogin()
{
    oAuthFacebook oAuth = new oAuthFacebook();    
      if (Request["code"] == null)
      {
          //Redirect the user back to Facebook for authorization.
          return new RedirectResult(oAuth.AuthorizationLinkGet());
      }
      else
      {
            oAuth.AccessTokenGet(Request["code"]);    
            if (oAuth.Token.Length > 0)
            {
               //Handle Accesstoken : oAuth.Token
            }
      }
      return RedirectToAction("Dashboard", "Home");                
 }

在这里我的问题是当我已经登录 Facebook 网站然后打开我的网站并单击使用 facebook 按钮登录时它工作得很好。

但是,如果我没有登录 facebook 网站,我想通过我的 mvc 应用程序重新登录 facebook。它会导致 facebook 重定向循环,这意味着它会继续调用我的回调 url,这样我就无法重定向到 Dashboard 操作,并且它会在重新加载时阻止我进入 Facebook 登录页面。我已清除所有 cookie 并尝试但它没有改变。我无法找到错误是我方还是 facebook 方。

更新: 如果我添加一个属性auth_type=reauthenticate来解决我的问题并且工作正常。如果我已经登录 facebook 网站,它会重新验证我的身份。如果我在 facebook 网站上注销并尝试通过我的应用程序登录,它会询问我大约2 次密码一次用于正常登录,另一次用于重新验证登录。有什么办法可以克服这种行为吗?请指导我。谢谢。

4

0 回答 0