2012-10-24 30 views
3

我已經使用Facebook SDK JS一個網站,自2年以上Facebook的All.Js新的錯誤

今天,Facebook的部分(我用的SDK中的一個選項卡顯示了用戶的時間線它的工作完美主頁)停止工作,並在頁面加載時它給了我這個JavaScript錯誤

任何幫助將不勝感激

錯誤:錯誤:表達式是字符串類型,不反對 源文件:http://connect.facebook.net/en_US/all.js 線:37

+0

同樣的問題在這裏 –

回答

5

這不像替換FB.Data.waitOnFB.Data.query那麼簡單。

我當前正在使用FB.Data.query函數調用使FQL調用來優雅地測試用戶是否已接受我的應用程序的(s)的publish_stream權限。 像這樣:

FB.api('/me', function(response) { 
    var user_id = response.id; 
    var query = FB.Data.query('select publish_stream from permissions where uid={0}', user_id); 
    query.wait(function(rows) { 
     if (rows[0].publish_stream == 1) { 
      //user has accepted our publish_stream permissions 
     } else { 
      //user has not accepted our publish_stream permissions 
     } 
    }); 
}); 

google搜索和搜索那可怕的Facebook開發論壇結束後,我是不是能找到什麼,我一直在尋找,直到我碰到這裏另一篇文章check for extended permissions with new facebook javascript sdk

來到當時我能夠拿出我的解決方案:

FB.api('/me/permissions', function(response) { 
    if (response && response.data) { 
     var permissions = response.data.shift(); 
     //console.log(permissions); 
     if (!permissions || (!permissions.publish_stream) || (permissions.publish_stream == 0)) { 
      //user has not accepted our publish_stream permissions 
     } else { 
      //user has accepted our publish_stream permissions 
     } 
    } 
}); 
+0

好了,真棒。 –

+0

我添加了額外的檢查以避免出現意外服務器行爲時出現的「未定義」問題。 –

+0

相同。原來FB.Data.query不再起作用。只需將其替換爲FB.api調用即可。它爲我工作! – ncz