Swift Facebook Graph API批量请求过滤?
问题是: 我的批处理请求返回传递的组事件,当前批处理请求将随着用户创建未来事件而严重扩展 我有以下批处理请求:Swift Facebook Graph API批量请求过滤?,swift,facebook-graph-api,facebook-batch-request,Swift,Facebook Graph Api,Facebook Batch Request,问题是: 我的批处理请求返回传递的组事件,当前批处理请求将随着用户创建未来事件而严重扩展 我有以下批处理请求: { "batch": [ { "method": "GET", "relative_url": "me" }, { "method": "GET", "rel
{
"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用作相对URL时不起作用:
me/groups?fields=events{id,name,start_time}&since=1599036240
过滤器参数为:
since=MY_CURRENT_TIME
我读的文档没有多大帮助。我甚至不知道是否可以在批处理请求中添加过滤器(字段)。
()
我还在FBs开发论坛上问了同样的问题,但没有回答(到目前为止):
更新1(2020年9月2日):
@CBroe指出,批处理请求URL的工作方式应与独立请求相同。这让我相信我的相对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"
}
],
确认过滤不适用于
&since=1599036240
和包含{}
的URL此处的问题是提供参数的格式
如果您直接通过events
端点,那么以这种方式提供since
参数将有效:/group id/events?since=…
但您没有使用该格式,而是通过me/groups?fields=events
——在这种情况下,指定,因为作为与字段
相同“级别”上的附加GET参数将不起作用。
原因是您可以通过这种方式从多个端点请求数据-
?fields=events,somethingelse&since=…
-我们是否希望通过since
值过滤事件的结果,或者somethingelse
,这里的值是模糊的
因此,这里需要使用字段扩展语法:
?fields=events.since(1599036240){id,name,start_time}
通过这种方式,since
参数在这里显式地绑定到事件
端点(您可以在这里为第二个端点指定somethingelse.since(…)
)
(参数的顺序必须是,事件{id,name,start_time}。由于(…)
会给出语法错误,字段列表首先是{…}
,然后查询解析器不理解点语法。)“以下查询URL在使用相对URL时不起作用”-这是用户现在的事件,你是指这里的那些,还是我们在谈论组事件?批处理请求不应该改变单个请求的工作方式。如果可以过滤端点,那么在批处理中应该以相同的方式工作。但是me/groups?fields=events{id,name,start_time}&since=1598509165
本身已经为我返回了2017年和2018年的事件。(我不知道这是否是因为缺少更多的最新事件;我不知道API是否决定通过,因为如果没有其他数据?@CBroe感谢您的快速响应和反馈。我复制了错误的URL。使用组事件URL更新了答案。但是me/groups?fields=events{id,name,start_time}&since=1599036240
直接执行,而不是在批处理中执行,会得到您期望的正确结果?@CBroe具有正确时间(现在)的请求返回空数组。我已经用用户事件对此进行了测试。用户事件URL如下所示:me/events?fields=end\u time、start\u time、id、name&since=1599036240谢谢“超过9000”。有关于Facebook Graph API的深入教程吗?您是否认为我的请求不正确或响应不正确(这是我根据不正确的请求得到的)?下面介绍了字段扩展,并且“不正确”的请求没有给出任何语法错误,这也是不可预期的,在本例中,只是参数的组合没有达到预期的结果,但这并不是真正的语法错误。此外,API通常对添加的其他GET参数“宽容”,您可以执行me?fields=id,name&foo=bar
,这也不会导致错误。