我遇到图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的所有照片的所有标记数据。
答案 0 :(得分:3)
我最近在PHP中创建了一个类似的项目(按顺序从所有facebook朋友那里获取所有照片)。 Facebook的限制记录很少,但我发现使用Graph API,朋友被标记为400张照片,朋友按照请求上传了5000张照片。请注意,从{user} / photos中提取只会提取已标记的照片,而{user} / photos / upload仅会提取{user}上传的照片。我认为400张标签和5000张上传的照片足以满足我的需求。
如果您确实需要其他照片,则必须检查用户/照片请求的返回照片数量,并检查它是否等于400.如果是,您将不得不转到下一页,递归。
对于/ photos /已上传的请求,Facebook使用基于光标的分页(请参阅this page的底部),这意味着只有当有更多内容时才会发送分页 - > next和分页 - > prev数据要返回的值。这样可以很容易地获得下一页(再一次,你必须递归地执行此操作)。