我有一个asp.net页面来检查facebook用户是否设置了权限。但是当用户设置权限并再次返回此页面时,FacebookWebContext.Current.IsAuthorized()仍会在IE中返回false。当我使用F5再次重新加载页面时,FacebookWebContext.Current.IsAuthorized()然后返回true。
当页面加载时以及手动重新加载页面后,FacebookWebContext.Current.IsAuthorized()的值会有所不同。
代码在FireFox和Chrome中正常运行。你知道为什么以及如何解决这个问题?
非常感谢!!!
=============================================== ==============
protected void Page_Load(object sender,EventArgs e) {
// enable third party cookies on IE
Response.AppendHeader("P3P", "CP=\"CAO PSA OUR\"");
IsAuthorized = FacebookWebContext.Current.IsAuthorized();
if (IsAuthorized && !Page.IsPostBack)
{
Response.Redirect("RegisterForm.aspx");
}
}
答案 0 :(得分:1)
经过一些研究,我发现了这个问题的根本原因。
Facebook正在使用Cookie来跟踪Facebook用户的权限设置。但有时在IFrame中IE无法访问cookie。要解决此问题,您应在Page_Load处理程序中设置P3P策略设置。
Response.AppendHeader("P3P", "CP=\"CAO PSA OUR\"");
我认为更好的方法是在global.asax文件中设置P3P设置:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");
}
我测试了我的facebook应用程序,现在它工作得很好。