2012-03-23 13 views
0

私はasp.netページを持っており、許可がfacebookユーザーによって設定されているかどうかを確認しています。しかし、ユーザーの設定権限と再びこのページに戻り、FacebookWebContext.Current.IsAuthorized()はまだIEにfalseを返したとき。私はF5、FacebookWebContext.Current.IsAuthorizedを(使用して再度ページをリロードすると)その後、trueを返します。FacebookWebContext.Current.IsAuthorized()はIEのPage_Loadで常にfalseを返します

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はCookieを使用してFacebookのユーザーの権限設定を追跡しています。しかし、時にはクッキーはiframe内にIEでアクセスすることはできません。問題を解決するために、あなたはあなたの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アプリケーションをテストし、そして今それがうまく働いています。

関連する問題