如何正确使用Facebook Catalog Batch API?批量删产品遇参数报错
解决Facebook Catalog API批量删除产品的参数错误问题
你的代码核心问题是POST请求的参数传递方式错误:你把JSON格式的请求体传给了params参数(这会将数据拼接在URL上),但Facebook items_batch接口要求POST的JSON负载放在请求体中,应该传给requests.post的data参数。
修正后的代码
import json import requests # 原代码遗漏了这个必要导入 url = "https://graph.facebook.com/v16.0/my_catalog_id/items_batch" headers = {"Content-Type": "application/json"} payload = { "access_token": "my_token", "item_type": "PRODUCT_ITEM", "requests": [ { "method": "DELETE", "data": { "id": "2634628" # 测试用的产品ID } }, # 可添加更多删除请求实现批量操作: # { # "method": "DELETE", # "data": { # "id": "另一个产品ID" # } # } ] } req = requests.post(url=url, data=json.dumps(payload), headers=headers) print(req.json()) # 打印响应便于调试
关键改动说明
- 将原代码的
params=json.dumps(params)改为data=json.dumps(payload):params用于传递URL查询参数,POST请求的JSON请求体必须通过data传递。 - 可选优化:直接用
json=payload替代data=json.dumps(payload),requests会自动处理JSON序列化并设置正确的Content-Type,代码更简洁:req = requests.post(url=url, json=payload, headers=headers)
额外注意事项
- 确保
access_token拥有catalog_management权限,且能访问目标产品目录。 requests数组可包含多个DELETE请求,实现批量删除多个产品的需求。data中的id是产品在目录中的产品ID(即上传产品时指定的id,或目录后台显示的产品ID)。
内容的提问来源于stack exchange,提问作者keymeans
相关产品推荐
相关产品推荐

