如何按creation_date过滤Facebook营销API线索?排查Graph Explorer请求报错
关于Facebook营销API线索过滤的问题解答
1. 如何通过创建时间过滤Facebook营销API中的线索?
首先得明确:Facebook营销API里没有creation_date这个字段,用来标识线索创建时间的是created_time。要过滤这个字段,核心是用好filtering参数,我给你捋清楚关键点:
- 选对操作符:根据你的需求来挑,比如要精确匹配某一天的线索用
EQUAL,要获取某个时间之后的线索用GREATER_THAN,之前的用LESS_THAN,灵活组合就行。 - 时间格式必须合规:API只认ISO 8601标准格式,比如
2018-04-18T00:00:00Z(UTC时区)或者带具体时区的2018-04-18T00:00:00+0800,别用空格分隔的2018-04-18 00:00:00,会报错。 - filtering参数的正确结构:它得是一个JSON数组,每个元素是包含
field(字段名)、operator(操作符)、value(过滤值)的对象。
给你举两个实用的例子:
- GET请求(URL编码后的正确形式,直接在Graph Explorer里能用):
<Ad_ID>/leads?filtering=[{"field":"created_time","operator":"GREATER_THAN","value":"2018-04-18T00:00:00Z"}]&fields=ad_name,campaign_name,adset_name,created_time&limit=1000
- POST请求(推荐用这种,避免URL编码麻烦,把参数放请求体里):
{ "filtering": [ { "field": "created_time", "operator": "EQUAL", "value": "2018-04-18T00:00:00Z" } ], "fields": "ad_name,campaign_name,adset_name,created_time", "limit": 1000 }
2. Graph Explorer中请求出现未知错误的原因及解决方法
你遇到的OAuthException (code:1)未知错误,其实是几个细节没处理好,我帮你排查一下:
- JSON格式写错了:你用了单引号来包裹字段和值,但JSON语法要求必须用双引号。而且直接在URL里传
filtering参数时,得把整个JSON数组作为一个字符串传递,不能拆成filtering[0]这种形式,API没法正确解析。 - 时间格式不对:你用的
2018-04-18 00:00:00不符合API要求,得改成ISO 8601格式,比如2018-04-18T00:00:00Z。 - URL编码问题:如果是GET请求,JSON里的双引号需要转义(或者直接用Graph Explorer自动处理,不过最好直接写正确的JSON字符串)。
修正后的正确GET请求,你可以直接复制到Graph Explorer里测试:
<Ad_ID>/leads?filtering=[{"field":"created_time","operator":"EQUAL","value":"2018-04-18T00:00:00Z"}]&fields=ad_name,campaign_name,adset_name,created_time&limit=1000
要是还是有问题,建议切换到POST请求,把参数放在请求体的JSON中,这样更直观,也不容易踩编码的坑。
内容的提问来源于stack exchange,提问作者jhon dano
相关产品推荐
相关产品推荐

