FacebookWebContext.Current.IsAuthorized()总是在IE的Page_Load中返回false

时间:2012-03-23 17:22:40

标签: facebook-c#-sdk

我有一个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");
            }   

    }

1 个答案:

答案 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应用程序,现在它工作得很好。