4

我遇到了图形 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 的所有照片的所有标签数据。

4

1 回答 1

3

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

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

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

于 2013-02-19T23:37:52.520 回答