使用Meta Marketing API创建Ad Creative遇act_xxxx报错求解决方案
解决Meta Marketing API创建Ad Creative时的错误(Code 100, Subcode 33)
针对你遇到的Unsupported post request错误,结合你已成功创建Campaign和Adset的情况,以下是具体排查和修复方案:
1. 修正请求参数的传递方式
你的代码中对object_story_spec和degrees_of_freedom_spec做了json.dumps序列化,并用data参数传递,这会导致请求被编码为form-urlencoded格式,而Facebook API要求JSON格式的请求体。修改方式如下:
import requests # Parameters api_version = 'v18.0' access_token = 'token' page_id = 'page_id' image_hash = 'hash_value' # API endpoint URL(将access_token加入查询参数) creative_url = f'https://graph.facebook.com/v18.0/act_xxxx/adcreatives?access_token={access_token}' # 直接传入字典,无需json.dumps data = { 'name': 'test - Creative', 'object_story_spec': { 'page_id': page_id, 'link_data': { 'description': '', 'image_hash': image_hash, 'link': f'https://facebook.com/{page_id}', 'message': 'message', 'name': 'headline', 'call_to_action': { 'type': 'LEARN_MORE', 'value': { 'link': f'https://facebook.com/{page_id}', 'link_caption': 'Click Now' } } } }, 'degrees_of_freedom_spec': { 'creative_features_spec': { 'standard_enhancements': { 'enroll_status': 'OPT_OUT' } } } } # 使用json参数发送请求,自动设置Content-Type为application/json response = requests.post(creative_url, json=data) print(response.json())
2. 验证Page权限与关联关系
- 确认访问令牌对应的用户/系统用户拥有目标Page的
pages_manage_posts和pages_show_list权限(可通过令牌调试工具核对权限列表)。 - 检查广告账户是否与该Page关联:在Facebook Ads Manager中,确保目标Page已添加到广告账户的资产库中。
3. 确认Image Hash的有效性
- 调用
act_xxxx/adimages接口,列出当前广告账户下的所有图片,核对你使用的image_hash是否存在且未被删除。 - 确保图片是通过
act_xxxx/adimages上传的,而非其他渠道(比如Page相册)。
4. 检查令牌的有效性与权限范围
- 用令牌调试工具验证:确认令牌未过期,且包含
ads_management、pages_manage_posts、pages_show_list权限。 - 如果使用的是系统用户令牌,需确保系统用户已被授予广告账户和Page的管理权限。
内容的提问来源于stack exchange,提问作者AbinBenny
相关产品推荐
相关产品推荐

