Facebook Marketing API调用失败求助:按官方示例编写仍报错
解决Facebook Marketing API创建Campaign返回400错误(错误码100/子码33)
针对你遇到的调用create_campaign接口返回400错误的问题,以下是具体排查和解决步骤:
1. 修正广告账户ID格式
Facebook广告账户ID必须以act_作为前缀,你的代码中使用的纯数字ID不符合要求,这是触发该错误的常见原因。修改后的ID格式应为:
id = 'act_1319248112287380'
2. 验证Access Token权限
- 确保你的Access Token拥有
ads_management、business_management权限,这是创建广告系列的必要权限。 - 如果使用沙箱环境,需确认沙箱广告账户已绑定到你的应用,且Access Token是在沙箱模式下生成的。
3. 检查广告目标参数有效性
OUTCOME_TRAFFIC是较新的结果型目标,部分账户或地区可能暂不支持。尝试替换为经典的TRAFFIC目标测试:
params = { 'name': 'My campaign', 'objective': 'TRAFFIC', 'status': 'PAUSED', }
4. 调整special_ad_categories参数
当无特殊广告类别时,可直接省略该参数,避免空数组被解析为字符串[]导致格式错误。若必须保留,需确保参数格式正确:
params = { 'name': 'My campaign', 'objective': 'TRAFFIC', 'status': 'PAUSED', 'special_ad_categories': None, }
5. 验证账户可访问性
先调用账户查询接口确认权限和账户有效性:
print(AdAccount(id).get_fields())
若该请求仍返回相同错误,说明账户ID无效或Access Token无访问权限,需重新确认账户归属或生成正确的Token。
修改后的完整示例代码
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.campaign import Campaign from facebook_business.api import FacebookAdsApi access_token = '#############' app_secret = '##############' app_id = '###############' # 修正账户ID格式 id = 'act_1319248112287380' FacebookAdsApi.init(access_token=access_token) fields = [] params = { 'name': 'My campaign', 'objective': 'TRAFFIC', 'status': 'PAUSED', } print(AdAccount(id).create_campaign( fields=fields, params=params, ))
内容的提问来源于stack exchange,提问作者Daniel Moen
相关产品推荐
相关产品推荐

