2011-05-23 55 views
10

我一直在使用Facebook Connect上的問題摔跤IE8,我已經達到了一個死衚衕,它看起來像:Facebook連接使用IE8導致問題;任何解決方法?

我們有一個Facebook遊戲(帆布iFrame)使用IE8時有報道問題。我們完全按照FB.init開發者頁面上的說明操作,但沒有得到任何答案。

我們嘗試使用channelUrl修復程序和各種修復程序,如概述here所述。

我們的響應頭髮送P3P頭:

P3P CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT" 

我們還測試了這款集成的異步和同步的版本,無論是在取得結果的任何差異。儘管我們在IE8上做了所有的努力,FB.getSession()總是返回一個未定義的值。雖然失望地沒有成功,但有很多信息報告給Facebook,他們認爲這不是一個錯誤......儘管他們認爲已經解決了這個問題很長時間以來,線程上的用戶一直在報告這個問題。

在最後一次嘗試中,我轉向這裏,從一個測試FB應用程序開始,除了FB.init JS示例添加了一些控制檯日誌記錄以顯示FB之外,其中沒有包含任何內容。 getSession已經得到了一個uid。

如果你回答這個問題,請我可以問你是對IE8檢查這一點,並正在尋找在控制檯上,這在FB會議取得成功的負載會寫

FB: [object Object] FB.getSession().uid: [your fb id] 

http://apps.facebook.com/fb-js-issue

的代碼有如下:

<div id="fb-root"></div> 
<script type="text/javascript"> 

    window.fbAsyncInit = function() { 

     FB.init({ 
      appId: 'appId', 
      status: true, 
      xfbml: true, 
      cookie: true, 
      channelUrl: "http://ourserver.com/channelUrl.htm" 
     }); 
     FB.Canvas.setAutoResize(); 
     console.log("Running FB test"); 

     setTimeout(function() { 
      console.log("FB: " + FB + " FB.getSession().uid: " + FB.getSession().uid); 
     }, 5000); 


    }; 
    (function() { 
     var e = document.createElement('script'); 
     e.async = true; 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
    }()); 

</script> 

所以大體上說,示例應用程序工作正常,雖然在罕見的情況下甚至有問題。

我們真正的應用程序(使用相同的方法FB.init)持續遭受的IE FB.getSession不確定的問題,從而無法加載

http://apps.facebook.com/party-on

UPDATE:我們已經確定了問題對Windows XP或Vista上的IE8有更嚴重的影響--Windows 7上的IE8似乎不太成問題(雖然不是100%)

如何通過這個?

所以......考慮到這個問題似乎很常見,而且沒有明確的解決方法,缺少一些尚未公開討論的嚴重魔法,最終會解決這個問題,真正具有啓發意義的是突出其他可能的方式來與FB.connect整合,而不是他們顯示的那個

我提到這個的原因是,當你看看CityVille和FarmVille如何完成它們的FB集成時,它與FB本身作爲開發人員文檔的東西沒有任何關係。嗯,有趣

在這個階段,任何新鮮的想法和不同的角度將大受歡迎!

+0

我剛剛遇到了這個問題:https://developers.facebook.com/blog/post/503,並想知道這是否有可能是因爲遇到的問題應該歸咎於 – 2011-05-24 17:02:32

+0

可能與所報告的其他類似問題有關: http://stackoverflow.com/questions/6113212/facebook-connect-login-popup-window-postbacks-with-no-error – 2011-05-24 18:13:14

+0

Facebook仍然有這個作爲一個開放的錯誤http://bugs.developers.facebook.net/ show_bug.cgi?id = 16842 – 2011-05-24 18:29:41

回答

1

只是一個隨機問題,你真的在​​IE 8模式下使用IE 8嗎?要小心,因爲有時IE 8翻到兼容模式(IE 7),然後你正在處理一組全新的問題。此頁面上的代碼強制IE以最新版本呈現。它需要成爲第一個元標記。

<meta http-equiv="X-UA-Compatible" content="IE=edge" > 

http://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx

+1

這意味着一個評論,而不是一個答案。得把這件事情弄清楚。 – Lucas 2011-06-12 05:19:44

1

我解決了類似的問題,增加異步加載body標籤後

<body> 
<div id="fb-root"></div> 
</body> 
<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'yourAppId', 
     status : true, 
     cookie : true, 
     xfbml : true, 
     frictionlessRequests : true 
    }); 

    FB.Canvas.setAutoGrow(); 
    FB.Event.subscribe('auth.statusChange', yourCode); 
}; 
(function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
}(document)); 
</script> 
1

嘗試刪除你的整個應用程序的所有console.log()電話。

0

剛剛花了很多時間試圖弄清楚爲什麼我的Facebook應用程序在IE8中無法正常工作,但在其他瀏覽器中卻沒有問題。症狀是FB.init似乎被稱爲ok,但在隨後調用FB.getLoginStatus(回調函數)時,回調函數在IE8(WinXP)中沒有被調用。

我最終通過從IE8中卸載「Google Chrome Frame」來修復它。在IE加載項管理器中禁用它是不夠的,我不得不通過控制面板完全卸載它。它的安裝允許在IE8中查看GMail,而且我的憤世嫉俗的人認爲Google可能不會太在意FB太多。該插件似乎也阻止IE8的JavaScript調試器加載FB頁面,這使得額外難以計算出正在發生的事情...

無論如何,以爲我會在這裏分享信息,以防其他人有類似的情況問題。

相關問題