FacebookWebContext.Current.IsAuthorized () всегда возвращает false в Page_Load в IE - PullRequest
0 голосов
/ 23 марта 2012

У меня есть страница asp.net, чтобы проверить, было ли разрешение установлено пользователем Facebook.Но когда пользователь установил разрешение и снова вернулся на эту страницу, FacebookWebContext.Current.IsAuthorized () все еще возвращает false в IE.Когда я снова перезагружаю страницу с помощью F5, FacebookWebContext.Current.IsAuthorized () затем возвращает true.

Значение FacebookWebContext.Current.IsAuthorized () отличается, когда страница загружается и после того, как я вручную перезагрузил страницу.

Код работает правильно в FireFox и Chrome.Знаете ли вы, почему и как я могу решить эту проблему?

Большое спасибо !!!

==================================================================

защищенная пустотаPage_Load (отправитель объекта, 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 Ответ

1 голос
/ 27 марта 2012

Проведя некоторые исследования, я нашел причину этой проблемы.

Facebook использует файлы cookie для отслеживания настроек разрешений пользователя Facebook.Но иногда cookie не может получить доступ к IE в IFrame.Чтобы решить эту проблему, вы должны установить параметры политики P3P в вашем обработчике Page_Load.

Response.AppendHeader("P3P", "CP=\"CAO PSA OUR\""); 

Я думаю, что лучший способ сделать это - установить параметры P3P в файле global.asax:

protected void Application_BeginRequest(Object sender, EventArgs e)
{

    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");

}

Я протестировал свое приложение на Facebook, и теперь оно работает просто отлично.

...