0

私は新しいFacebookのログインを使用しているIEのために元の画面に戻っていない:のFacebookのOAuthログインの成功だけ

window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '@facebookAppId', // App ID 
      status: true, // check login status 
      cookie: true, // enable cookies to allow the server to access the session 
      xfbml: true, // parse XFBML 
      oauth: true 
     }); 
     runFbInitCriticalCode(); 
    }; 

    function runFbInitCriticalCode() { 
     // Additional initialization code here 
     FB.Event.subscribe('auth.login', function() { 
      window.location = "/facebookPostAuth.aspx"; 
     }); 

     FB.Event.subscribe('auth.logout', function (response) { 

     }); 

     // Hack to fix http://bugs.developers.facebook.net/show_bug.cgi?id=20168 for IE7/8/9 
     FB.UIServer.setLoadedNode = function (a, b) { FB.UIServer._loadedNodes[a.id] = b; }; 
    }; 

    // Load the SDK Asynchronously 
    (function (d) { 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; } 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    } (document)); 

誰もがSUCCESSログインポップアップし、ログインポップアップが閉じた後、成功の結果が返されない理由を知っていますログインページまたは発信者ページに移動しますか?これはIEでのみ発生します。

答えて

0

FB.Event.subscribe( 'auth.login') IEには100%信頼できないことがあります。

私はIEでJavaScriptをデバッグしています。 IE Developerツールでデバッグしていないときは、通常はヒットしません。

FBトークンの受信を確認するためのIEの保険としてJavaScriptの時間間隔を設定しました(デバッグしていないときにログインイベントの購読がIEでは動作しなくても、ログイン後にいつもaccesstokenを取得するので、 。

まだまだ...誰かが質問の理由を知っていれば、plsは気軽に投稿できます。

UPDATE

代わりに初期化する必要がありますFacebookのボタンを使用して、私は明示的にJavaScriptのクリックイベントハンドラを使用してログイン機能を呼び出すカスタムアンカー/ボタンを設定しました。それはIEの特異性を解決し、トークンが受信されたときにチェックするための時間間隔はもう必要ありません。さらに、オリジナルのFB初期化ログインボタンをスタイリングするのではなく、最初からスタイルを変更することができます。クリックイベントで

http://developers.facebook.com/docs/reference/javascript/FB.login/

、私が呼ん:

FB.login(function(response) { 
    if (response.authResponse) { 
    //Token, Login Status can be grabbed from response.authResponse 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope: 'email'}); 
0

問題はIEのために必要なP3Pヘッダを行うことです。

我々は常にこれを行うことにより、(MVC3 ASP.NETです)私たちのプロジェクトでは、このヘッダーを追加します。

protected override void OnResultExecuting(ResultExecutingContext filterContext) 
     { 
      base.OnResultExecuting(filterContext); 
      // You need this to allow IE to have cross domain cookies and sessions 
      filterContext.HttpContext.Response.AddHeader("P3P:CP", "IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"); 
      filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", FacebookSettings.CurrentConfig().CanvasUrl); 
     } 

を現在より多くの情報を見つけることができます。

Iframe Facebook application and cookies [Internet Explorer]

関連する問題