FaceBookFilter无止境重定向
我正在尝试将facebook登录添加到我的应用程序中。在这方面,我使用了以下代码片段:FaceBookFilter无止境重定向,facebook,asp.net-mvc-4,Facebook,Asp.net Mvc 4,我正在尝试将facebook登录添加到我的应用程序中。在这方面,我使用了以下代码片段: [FacebookAuthorize] public ActionResult About() { ViewBag.Message = "Your app description page."; return View(); } 我注册了一个过滤器FacebookAuthorizeFilter 当我导航到/主页/关于我得到的是一个无休止的重定
[FacebookAuthorize]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
我注册了一个过滤器FacebookAuthorizeFilter
当我导航到/主页/关于我得到的是一个无休止的重定向到
/Home/About?code=AQAPoxl1J-.......
如果我只使用ASP.NET MVC4项目模板中提供的OAuth,我可以使用facebook登录
我遗漏了什么?经过数小时的调试、反思和源代码分析,我得出结论,FaceBookAuthorizationAttribute和FaceBookAuthorizationFilter只能在Facebook画布应用程序中有意义地使用。我深入研究了FaceBookAuthorization过滤器代码。该过滤器不适用于非画布应用程序的原因是,在该过滤器的OnAuthorization方法中,该方法依赖于用户重定向回您的应用程序时,POST Requeset中存在Facebook的签名请求。如果签名的_请求从不存在,筛选器将继续重定向: …代码省略
if (signedRequest == null || String.IsNullOrEmpty(userId) || String.IsNullOrEmpty(accessToken))
{
// Cannot obtain user information from signed_request, redirect to Facebook OAuth dialog.
string redirectUrl = GetRedirectUrl(request);
Uri loginUrl = client.GetLoginUrl(redirectUrl, _config.AppId, null);
filterContext.Result = CreateRedirectResult(loginUrl);
}
…代码省略
另一种方法是创建一个类似的过滤器,检查代码查询字符串参数是否存在。获得代码后,您可以使用应用程序的appId和appSecret将代码交换为访问令牌。获得访问令牌后,您可以确定用户授予了哪些权限,并进行适当的处理。我遇到了同样的问题。你还记得为什么会这样吗?