2012-03-24 33 views
0

我跑了一個例子,從複製:Facebook的JS SDK不返回任何結果

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

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

(我只是改變了我的APP_ID)

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'MY_ID', // App ID 
     channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    FB.api('/platform/posts', { limit: 3 }, function(response) { 
    for (var i=0, l=response.length; i<l; i++) { 
    var post = response[i]; 
    if (post.message) { 
     alert('Message: ' + post.message); 
    } else if (post.attachment && post.attachment.name) { 
     alert('Attachment: ' + post.attachment.name); 
    } 
    } 
}); 
    }; 

    // Load the SDK Asynchronously 
    (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> 

沒有顯示在瀏覽器中。控制檯中沒有JavaScript錯誤(Opera 11)。爲什麼它不起作用? 。

回答

0

它看起來像您沒有登錄,您需要驗證用戶首先要獲得到位OAuth憑證,然後才能運行這部分代碼:

 FB.api('/platform/posts', { limit: 3 }, function(response) { 
     for (var i=0, l=response.length; i<l; i++) { 
     var post = response[i]; 
     if (post.message) { 
      alert('Message: ' + post.message); 
     } else if (post.attachment && post.attachment.name) { 
      alert('Attachment: ' + post.attachment.name); 
     } 
     } 
    }); 

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

1

我有同樣的問題,並意識到該示例沒有正確解析響應。該對象有一個屬性數據這實際上是要解析的數組。

另一點是你需要一個令牌來做這個操作。所以你的代碼應該是:

<div id="fb-root"></div> 
<script> 
    var fbToken; // Highly recommended to make it global 
    window.fbAsyncInit = function() 
    { 
     FB.init({ 
      appId  : 'MY_ID', // App ID 
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
     }); 

     FB.login(function(response) 
     { 
      if (response.authResponse) 
      { 
       fbToken = response.authResponse.accessToken; // Save it for another requests 
       FB.api('/platform/posts', {limit:3}, function(response){ 
        for (var i=0, l=response.data.length; i<l; i++) 
        { 
         var post = response.data[i]; 
         if (post.message) 
         { 
          alert('Message: ' + post.message); 
         } else if (post.attachment && post.attachment.name) 
         { 
          alert('Attachment: ' + post.attachment.name); 
         } 
         } 
       }); 
      } else { 
       // User did not accept oAuth 
      } 
     }); 
    } 
    // Load the SDK Asynchronously 
    (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>