我正在查询Facebook上的全尺寸个人资料图片,用户评论已发布的图片或者喜欢/ me用户发布的照片,使用图形api。 我想要:
在一个查询中:这不起作用(它没有提供评论的用户的详细信息):
me/photos/uploaded?fields=from,images,comments.picture,likes.picture&limit=500
并指定尺寸会引发错误:
me/photos/uploaded?fields=from,images,comments.picture,likes.picture.type(large)&limit=500
尽管我没有在文档中找到任何明确的内容,但您可以指定的深度似乎有限。 (这是如此简洁,几乎不是一个大惊喜)
所以,解析具有依赖关系的批处理查询
myphotos => me/photos/uploaded?fields=created_time,name,id,from,comments.summary(1).limit(100),images,likes.summary(1).limit(100)&limit=500
userinfo_photocomments => ?ids={result=myphotos:$.data.*.comments.data.*.from.id}&fields=id,name,updated_time,picture.redirect(0).type(large).height(2000).width(2000)
userinfo_photolikes => ?ids={result=myphotos:$.data.*.likes.data.*.id}&fields=id,name,updated_time,picture.redirect(0).type(large).height(2000).width(2000)
尽管这样可行,但我无法在一个或最多2个查询中找到这样做的事实让我感到很恼火,特别是因为最后2个子查询的结果很可能会重叠。
我想找到一种混合jsonpath锚点的方法,这样我就可以组合最后两个查询。 问题似乎是评论员和喜欢者的用户ID在树中的不同深度。
我会感激任何见解。
答案 0 :(得分:1)
我认为你应该能够使用第一个查询的结果两次,结果只有两个查询。
我测试了?ids=
端点,如果它过滤掉重复的user_id
,如下所示:
GET /?ids={user_id1},{user_id2},{user_id1}
导致只返回两个不同的user_ids
。
因此,这会产生以下批处理查询:
curl \
-F 'access_token={access_token}' \
-F 'batch=[{ "method":"GET","name":"myphotos","relative_url":"me/photos/uploaded?fields=created_time,name,id,from,comments.summary(1).limit(100),images,likes.summary(1).limit(100)&limit=500",},{"method":"GET","relative_url":"?ids={result=myphotos:$.data.*.comments.data.*.from.id},{result=myphotos:$.data.*.likes.data.*.id}&fields=id,name,updated_time,picture.redirect(0).type(large).height(2000).width(2000)"}]' \
https://graph.facebook.com/
只需将{access_token}
替换为实际的访问令牌即可对此进行测试。
基本上,我只是将user_id
列表连接起来评论并喜欢
GET ?ids={result=myphotos:$.data.*.comments.data.*.from.id},{result=myphotos:$.data.*.likes.data.*.id}&fields=...