You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:45:05