使用Facebook Graph API创建空白受众时遇权限/对象不存在错误
解决Facebook Marketing API创建空白受众时的权限/对象不存在错误
我帮你分析下这个创建Facebook空白受众时遇到的错误,这个问题在Marketing API开发里挺常见的,主要从这几个方向排查和解决:
核心错误分析
你收到的错误提示:
"Unsupported post request. Object with ID '692xxxxxxxx1141' does not exist, cannot be loaded due to missing permissions"
本质上是API无法识别你指定的账户对象,要么是对象格式/ID本身有问题,要么是你的访问令牌没有权限访问它。
可能的原因及修复方案
1. 广告账户ID格式错误(最常见的坑)
Facebook广告账户ID必须以act_作为前缀,如果你直接传入纯数字ID(比如692xxxxxxxx1141),API会无法识别这是一个广告账户对象,直接返回“对象不存在”。
修复后的代码示例
from facebookads.adobjects.customaudience import CustomAudience from facebookads.adobjects.adaccount import AdAccount from facebookads.api import FacebookAdsApi # 初始化API FacebookAdsApi.init(access_token='EAAGbDDbxxxxxx') # 关键:添加act_前缀到账户ID ad_account = AdAccount('act_692xxxxxxxx1141') # 创建空白自定义受众 try: audience = ad_account.create_custom_audience( fields=[], params={ 'name': '测试空白受众', 'subtype': 'CUSTOM', 'description': '通过API创建的空白受众', }, ) print(f"受众创建成功,ID: {audience.get_id()}") except Exception as e: print(f"创建失败:{e}")
2. 访问令牌缺失必要权限
你的访问令牌必须包含以下权限才能创建自定义受众:
ads_management:管理广告账户资源的基础权限custom_audience_management:专门用于自定义受众的创建/管理权限- 如果你的账户关联了商务管理平台,还需要
business_management权限
你可以通过Facebook官方的令牌调试工具检查权限列表,如果缺失权限,需要重新生成令牌时勾选对应权限,或者在商务管理平台中给令牌所属的用户/应用分配对应权限。
3. 广告账户ID无效或无权访问
- 确认你使用的ID确实是广告账户ID,而不是用户ID、公共主页ID或商务管理平台ID
- 检查访问令牌所属的用户/应用是否被授权访问该广告账户:在商务管理平台的广告账户设置里,确保该用户/应用被添加为管理员、编辑员(至少需要编辑员权限才能创建受众)
4. 应用未通过权限审核(针对公开应用)
如果你的应用是面向外部用户的公开应用,而非内部测试应用,需要通过Facebook的应用审核流程,获取ads_management等权限的正式授权,否则只能访问你自己的个人测试账户资源。
内容的提问来源于stack exchange,提问作者Harsh sachdev




