2013-02-14 89 views
4

我有图形API的回报问题,我想知道是否有人知道我为什么或如何修复它。Facebook图形/ Fql:获取所有图片

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

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张左右的照片,这是不可接受的,我需要所有这些照片

由于/直到(或created_time <或> __)以及限制子句仅提高结果计数与FQL但分块数量使得它非常低效。

任何想法?标签数据对我的目的也很重要。

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

+0

你需要什么,什么是问题? – 2013-02-17 04:06:09

回答

3

我最近在PHP中创建了一个类似的项目(将所有Facebook好友的照片全部取出)。 Facebook的限制记录很差,但我发现使用Graph API,朋友被标记为400张照片,每个请求上传的朋友有5000张照片。请注意,从{用户} /照片拉取只拉他们被标记的照片,而{用户} /照片/上传只拉取{用户}上传的照片。我想到400个标签和5000张上传的照片足以满足我的情况。

如果你确实需要额外的照片,你必须检查/照片请求的用户返回照片的数量,并检查它是否等于400.如果是这样,你将不得不进入下一页,递归地。

对于/照片/上传的请求,Facebook使用基于光标的分页(请参阅this page的底部),这意味着只有当有更多值返回时,才会发送pagination-> next和pagination-> prev数据。这使得下一页很容易(再一次,你将不得不递归)。

+0

我很欣赏答案。对于用户/照片,它似乎使用基于时间的分页。最后一行显示为:https://graph.facebook.com/frienduid/photos?fields=source,tags.fields(name,id)&limit=5000&type=tagged&until=1190408747 - 但是当我遵循该链接时,它总是空的(用户肯定有超过400个标签) - 关于如何超过400的任何想法? – JoshDG 2013-02-20 19:14:09

+0

您是否确定包含您的访问令牌?如果你不在URL中包含'access_token'参数,它只会拉出用户标记的_public_照片,这可能显着小于400. – 2013-02-20 22:35:35

+0

现在我只是使用图形API浏览器来测试它,所以它会自动包含令牌,然后我会尝试关注底部的页面。 (我尝试添加令牌以防万一..但它不起作用...无论哪种方式,第一页确实会返回400个值,但显然发生在400次之前) – JoshDG 2013-02-20 23:10:05

相关问题