2012-03-23 4 views
0

J'ai une page asp.net pour vérifier si la permission a été définie par l'utilisateur facebook. Mais lorsque l'utilisateur configure l'autorisation et revient sur cette page, FacebookWebContext.Current.IsAuthorized() renvoie toujours false dans IE. Lorsque je recharge à nouveau la page en utilisant F5, FacebookWebContext.Current.IsAuthorized() puis renvoie true.FacebookWebContext.Current.IsAuthorized() renvoie toujours false dans Page_Load dans IE

La valeur de FacebookWebContext.Current.IsAuthorized() est différente lors du chargement de la page et après le rechargement manuel de la page.

Le code fonctionne correctement dans FireFox et Chrome. Savez-vous pourquoi et comment puis-je résoudre ce problème?

Merci beaucoup!

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

protected void Page_Load (expéditeur d'objet, 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"); 
      } 

    } 

Répondre

1

Après avoir fait quelques recherches, je trouve la cause profonde de cette problème.

Facebook utilise des cookies pour suivre le paramètre d'autorisation de l'utilisateur facebook. Mais parfois le cookie ne peut pas accéder par IE dans le IFrame. Pour résoudre le problème, vous devez définir les paramètres de stratégie P3P dans votre gestionnaire Page_Load.

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

Je pense que la meilleure façon de le faire est de définir les paramètres P3P dans le fichier global.asax:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 

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

} 

J'ai testé mon application facebook, et maintenant il fonctionne très bien.

Questions connexes