【问题标题】:Running a for loop on data from Facebook Graph Api对来自 Facebook Graph Api 的数据运行 for 循环
【发布时间】:2016-08-12 05:24:56
【问题描述】:

我正在尝试在我妈妈的婚礼网站上动态显示她添加到 Facebook 相册中的照片,但我无法让图像渲染和循环播放。我的获取请求正在工作,目前正在提取图片链接和相册中每张照片的 ID。这是返回的 json 示例。

{
 "photos": {
  "data": [
     {
        "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/13879222_1235179076493734_1631898598554522774_n.jpg?oh=e6d74e7731f374be63a378e99ef3a88e&oe=58111449",
        "id": "1235179076493734"
     }

这是我目前的代码

$.getJSON('https://graph.facebook.com/102060453138941?fields=photos{picture}&access_token=xxx', 
function(fbResults) {

        for(var i =0; i < fbResults; i++) {

            $('.gallery').append(

            '<img class="" src="https://graph.facebook.com/'+ this.id +'/picture" />'

            );


        }



    });

【问题讨论】:

  • 在 for 循环之前放一个 console.log(fbResults) 看看你得到了什么。 for 循环肯定是错误的......它可能是“i
  • 顺便说一句,您使用的是什么访问令牌?希望每个用户都不一样?应用访问令牌?您不应该使用该客户端,它包含应用程序机密。另外,你根本不应该做这个客户端,否则你可能会达到 api 限制。最好在服务器端进行(例如 php curl)并将结果缓存在数据库中。
  • 我正在使用扩展用户访问令牌,只有一个人会使用它。我还在学习 php,这就是我在客户端做它的原因。
  • 我添加了 consoleLog 并返回了一个包含 25 个项目的数组,但我不确定如何显示每个图像。现在我有一个图像标签,其 src url 设置为 src="graph.facebook.com/'+ photos[id] + '/picture 但没有显示。
  • jquery 的问题是人们不再学习 javascript...你应该先学习它,并且只有在你真正从中受益时才使用 jquery - 这几乎是永远不会;)跨度>

标签: facebook facebook-graph-api


【解决方案1】:

试试这个:

for(var i = 0; i < fbResults.photos.data.length; i++) {
    $('.gallery').append(
        '<img class="" src="https://graph.facebook.com/'+ fbResults.photos.data[i].id +'/picture" />'
    );
}

顺便说一句,您只能通过 API 获得 25 个条目。可以使用limit参数设置限制,也可以使用分页:https://developers.facebook.com/docs/graph-api/using-graph-api/#paging

如果您需要一次获取所有条目,我建议使用带有递归函数的分页。

顺便说一句,您需要将用户令牌添加到每一行,这是一个非常糟糕的主意。整个代码最好发送到服务器,您应该实际下载照片并缓存它们。只是说说而已。

【讨论】:

  • 我尝试了您的解决方案,我在控制台中收到此消息,无法读取未定义的属性“长度”
  • 如果这不起作用,请在您的问题中包含 console.log(fbResults) 的确切输出。
  • 所以当我打开检查工具时,我收到的消息是 Object {photos: Object, id: "102060453138941"} 然后我收到错误消息 Cannot read property 'length' of undefined
  • 所以我从 fbresults 中取出数据部分,错误消息消失了,所以现在我可以看到 Object {photos: Object, id: "102060453138941"} 但仍然没有图像。我的图片来源现在是graph.facebook.com/'+fbResults.data[i].id +'/picture"
  • 你应该使用chrome dev工具进行调试,你可以在那边的console中看到所有的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多