Facebook Graph API批量请求筛选



问题:我的批处理请求返回已传递的组事件,当前批处理请求将随着用户创建未来事件而严重扩展。

我有以下批量请求:

{
"batch": [
{
"method": "GET",
"relative_url": "me"
},
{
"method": "GET",
"relative_url": "me/groups?fields=events{id,name,start_time}"
},
{
"method": "GET",
"relative_url": "me/accounts"
}
],
"include_headers": "false"
}

此请求将获取(除其他外(所有用户组事件。我只需要即将到来的活动。

问题:如何在批处理请求中应用筛选器

以下查询URL用作relative_URL时不起作用:

me/groups?fields=events{id,name,start_time}&since=1599036240

过滤器参数为:

since=MY_CURRENT_TIME

我读到的文件并没有多大帮助。我甚至不知道是否可以在批处理请求中添加过滤器(字段(。(https://developers.facebook.com/docs/graph-api/making-multiple-requests/(

https://developers.facebook.com/community/threads/325616225418947/?notif_id=1599002283105969&notif_t=developer_community_forum_thread_update&ref=通知

我还在FBs开发论坛上问了同样的问题,但没有得到回答(到目前为止(:https://developers.facebook.com/community/threads/325616225418947/?notif_id=1599002283105969&notif_t=developer_community_forum_thread_update&ref=通知

更新1(2020年9月2日(:

@CBroe指出,批处理请求URL的工作方式应与独立请求相同。这让我相信我的relative_url没有正确过滤。测试:

me/groups?fields=events{id,name,start_time}&since=1599036240

输出:

events": {
"data": [
{
"id": "324058568947509",
"name": "Testing FB Graph API",
"start_time": "2020-08-25T15:00:00+0200"
}
],

符合过滤不适用于CCD_ 2和包含CCD_。

这里的问题是提供参数的格式。

如果您直接通过events端点,那么以这种方式提供since参数将起作用:/group-id/events?since=…

但您没有使用该格式,而是通过me/groups?fields=events进行操作,在这种情况下,将since指定为与fields相同"级别"的附加GET参数是行不通的
原因是您可能会以这种方式从多个端点请求数据-
?fields=events,somethingelse&since=…-我们是否希望通过此处的since值来筛选eventssomethingelse的结果,这将是模糊的。

因此,这里需要使用字段扩展语法:

?fields=events.since(1599036240){id,name,start_time}

通过这种方式,since参数在此处显式绑定到events端点(您可以在此处为第二个端点指定不同的somethingelse.since(…)。(

(参数需要按此顺序排列,events{id,name,start_time}.since(…)会给出语法错误,字段列表首先是{…},然后查询解析器无法理解点语法。(

最新更新