2012-03-23 1 views
0

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

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

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

спасибо!

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

защищен недействительным Page_Load (объект отправителя, EventArgs е) {

  // 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

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

Facebook использует Cookies для отслеживания настроек разрешения пользователя 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 приложения, и теперь он работает просто отлично.

Смежные вопросы