【问题标题】:Facebook Graph / Fql: Get all picsFacebook Graph / Fql:获取所有图片
【发布时间】:2013-02-14 19:48:07
【问题描述】:

我遇到了图形 API 的返回问题,我想知道是否有人知道为什么或如何解决它。

我需要下载给定用户的所有照片数据(朋友数据,而不是活跃用户)。这是我尝试过的两件事。

FQL: "select pid from photo where subject=friend_uid"
Graph: "friend_uid/photos?fields=picture,created_time,tags.fields(name,id)&limit=1000"

我有 friends_photos 和 user_photos 权限。

标签数 > 1000 的任何用户的结果数都会大大减少。 例如,它只会返回大约 200 张左右的照片,这是不可接受的,我需要所有照片

使用 since/until(或 created_time __)以及限制子句进行分块只会提高 FQL 的结果计数,但分块的数量使其效率非常低。

有什么想法吗?标签数据对我的目的也很重要。

因此,我需要正确的查询或查询序列来使用 FQL 或 graph-api 获取给定 user_id 的所有照片的所有标签数据。

【问题讨论】:

  • 您需要什么,有什么问题?

标签: facebook facebook-graph-api facebook-fql


【解决方案1】:

我最近在 PHP 中创建了一个类似的项目(按顺序从您所有的 facebook 好友中提取所有照片)。 Facebook 的限制记录不充分,但我发现使用 Graph API,朋友被标记的照片是 400 张,朋友每次请求上传的照片是 5000 张。请注意,从 {user}/photos 拉取仅拉取他们标记的照片,而 {user}/photos/uploaded 仅拉取 {user} 上传的照片。我认为 400 张标记和 5000 张上传的照片足以满足我的情况。

如果您确实需要额外的照片,则必须检查 /photos 请求为用户返回的照片数量,并检查它是否等于 400。如果是,则必须继续下一页,递归。

对于 /photos/uploaded 请求,Facebook 使用基于光标的分页(参见this page 的底部),这意味着只有当有更多值要返回时才会发送 pagination->next 和 pagination->prev 数据。这使得获取下一页变得相当容易(再次,您将不得不递归地执行此操作)。

【讨论】:

  • 感谢您的回答。对于用户/照片,它似乎使用基于时间的分页。最后一行是:graph.facebook.com/frienduid/…——但是当我点击那个链接时,它总是空的(而且用户肯定有超过 400 个标签)——关于如何超过 400 个的任何想法?
  • 您确定包含您的访问令牌吗?如果你不在 URL 中包含 access_token 参数,它只会拉取标记用户的 public 照片,这可能远小于 400。
  • 现在我只是使用Graph API explorer来测试它,所以它会自动包含token,然后我尝试关注底部的页面。 (我也尝试添加令牌以防万一……但它没有用……不管怎样,第一页确实返回 400 个值,但显然是在第 400 个时间之前发生的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
相关资源
最近更新 更多