0

我正在使用 Javascript 中的 Facebook API 来尝试从 Facebook 中提取帖子。我从文档中的这个页面复制了代码。该函数将访问给定的页面并实际产生响应。但是, response.length 和 response[i] 返回为“未定义”,因此循环无法工作。为什么会这样?

<button onclick="ShowMyPosts()">Show posts</button>
<script language="javascript" type="text/javascript">
    function ShowMyPosts() {
        FB.api('/TheWalkingDeadAMC/posts', { limit: 3 }, function(response) {
            console.log(response)
            console.log(response.length)
          for (var i=0, l=response.length; i<l; i++) {
                var post = response[i];
                console.log(post)
                if (post.message) {
                    console.log('Message: ' + post.message);
                } else if (post.attachment && post.attachment.name) {
              console.log('Attachment: ' + post.attachment.name);
            }
          }
  }
)
console.log("successfully ran function")        
};
</script>

我如何获得访问令牌。这是不正确的吗?

FB.login(function(response) {
    if (response.authResponse) {
        var access_token =   FB.getAuthResponse()['accessToken'];
        console.log('Access Token = '+ access_token);
        FB.api('/me', function(response) {
            console.log('Good to see you, ' + response.name + '.');
            });
    } else {
        console.log('User cancelled login or did not fully authorize.');
        }{scope: 'read_stream'} 
    }); 
4

2 回答 2

2

当您查询 Graph API - 大多数结果将在data键内...

使用Graph API Explorer,您可以测试您的调用并查看结果,而无需编写任何代码。

这是您的 Graph API 调用测试的直接链接。如您所见data,持有职位。

所以,你需要循环response.data而不是response.

代码应如下所示:

function ShowMyPosts() {
    FB.api('/TheWalkingDeadAMC/posts', { limit: 3 }, function(response) {
       console.log(response.data);
       console.log(response.data.length)
       for (var i=0, l=response.data.length; i<l; i++) {
          var post = response.data[i];
          console.log(post)
          if (post.message) {
             console.log('Message: ' + post.message);
          } else if (post.attachment && post.attachment.name) {
             console.log('Attachment: ' + post.attachment.name);
          }
       }
  }
于 2013-04-02T01:53:52.133 回答
0

我认为问题在于我的 FB.login 不正确。这是下面的正确代码:

FB.login(
function(response) {
    if (response.authResponse) {
        var access_token =   FB.getAuthResponse()['accessToken'];
        console.log('Access Token = '+ access_token);
        FB.api('/me', function(response) {
            console.log('Good to see you, ' + response.name + '.');
            });
    } else {
        console.log('User cancelled login or did not fully authorize.');
        }},
    {scope: 'read_stream'}  
    ); 
于 2013-04-02T15:16:05.400 回答