Facebook graph api jsonpath:混合两条路径

Facebook graph api jsonpath:混合两条路径,facebook-graph-api,jsonpath,Facebook Graph Api,Jsonpath,我正在使用graph api查询facebook,以获取对发布的图片发表评论或喜欢该/me用户发布的图片的用户的全尺寸个人资料图片。 我试图: 在一个查询中完成,我在从足够深的地方获取数据时遇到困难 或者最小化子查询的数量 在一个查询中:这不起作用(它不提供评论用户的详细信息): 指定尺寸会引发错误: me/photos/uploaded?fields=from,images,comments.picture,likes.picture.type(large)&limit=500

我正在使用graph api查询facebook,以获取对发布的图片发表评论或喜欢该/me用户发布的图片的用户的全尺寸个人资料图片。 我试图:

  • 在一个查询中完成,我在从足够深的地方获取数据时遇到困难
  • 或者最小化子查询的数量
在一个查询中:这不起作用(它不提供评论用户的详细信息):

指定尺寸会引发错误:

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在树的不同深度


如果您有任何见解,我将不胜感激。

我认为您应该能够使用第一次查询的结果两次,结果只会产生两次查询

我测试了
?id=
端点,如果它过滤掉重复的
用户id
,如下所示:

GET /?ids={user_id1},{user_id2},{user_id1}
这只会导致返回两个不同的
用户id

因此,这将在以下批处理查询中生成:

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\u token}
替换为实际的访问令牌即可进行测试

基本上,我只是将
user\u id
列表连接起来,作为评论和喜欢的内容

GET ?ids={result=myphotos:$.data.*.comments.data.*.from.id},{result=myphotos:$.data.*.likes.data.*.id}&fields=...

这确实是一种非常实用的方法。将其分解为两个查询。好主意!很高兴它对你有用。还有一件好事是FB使
用户ID
不同,你不必自己过滤这些ID。还有一个问题:如果第一次查询中提交了很多图片,那么将进行分页。正因为如此,ID将在连接的结果页中重叠。。。。。。这是我最后必须通过编程解决的问题。
GET ?ids={result=myphotos:$.data.*.comments.data.*.from.id},{result=myphotos:$.data.*.likes.data.*.id}&fields=...