我正在研究 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 次密码一次用于正常登录,另一次用于重新验证登录。有什么办法可以克服这种行为吗?请指导我。谢谢。