Facebook Graph / Fql:获取所有图片

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 < or> __)和limit子句进行分块仅能改善FQL的结果计数,但分块量使其效率非常低下。
有什么想法吗?标签数据也很重要。
因此,我需要适用于FQL或Graph-API的正确查询或查询序列,以获取给定user_id的所有照片的所有标签数据。

你需要什么,有什么问题吗? - Somnath Muluk
1个回答

3
我最近使用PHP创建了一个类似的项目(按顺序从所有Facebook好友中提取所有照片)。 Facebook的限制文档不够清晰,但我发现使用Graph API时,每个请求标记的朋友有400张照片,上传的朋友有5000张照片。请注意,从{user}/photos中提取只会提取他们被标记的照片,而{user}/photos/uploaded只会提取{user}上传的照片。我认为400个标记和5000个上传的照片对我的情况足够了。
如果您需要更多的照片,您将不得不检查/照片请求的用户返回的照片数,并检查它是否等于400。如果是,则必须继续到下一页,进行递归操作。
对于/ photos / uploaded请求,Facebook使用基于光标的分页(请参见this page底部),这意味着仅在有更多值要返回时才发送分页->next和分页->prev数据。这使得获取下一页变得相当容易(再次进行递归操作)。

我感谢您的回答。对于用户/照片,它似乎使用基于时间的分页。最后一行读取:https://graph.facebook.com/frienduid/photos?fields=source,tags.fields(name,id)&limit=5000&type=tagged&until=1190408747 -- 但是当我跟随该链接时,它总是为空(而且用户肯定有超过400个标签)-- 有什么办法可以超过400个标签吗? - JoshDG
你确定已经包含了访问令牌(access token)吗?如果URL中没有包含access_token参数,将只获取用户被标记的_公开_照片,这可能远少于400张。 - Zane
现在我只是使用Graph API浏览器进行测试,因此它会自动包含令牌,然后我尝试在底部关注该页面。(我尝试添加令牌以防万一...但它没有起作用...无论如何,第一页确实返回了400个值,但显然在第400个之前发生了那些事件) - JoshDG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接