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

Facebook Python SDK添加用户到CustomAudience遇错误及Token疑问

解决Custom Audience添加用户的AttributeError及Token疑问

1. 修复AttributeError: type object 'Schema' has no attribute 'MOBILE_ADVERTISER_ID'

这个错误主要是SDK版本差异或Schema枚举引用方式不对导致的,给你两种可行的解决方案:

方案一:直接使用字符串常量替代枚举

如果暂时不想折腾SDK版本,你可以跳过CustomAudience.Schema的枚举引用,直接传入对应的字符串类型标识,这在所有SDK版本中都能兼容:

from facebookads.adobjects.customaudience import CustomAudience

audience = CustomAudience('custom_audience_id')
users = ['ID_1','ID_2','ID_3']
# 直接传入字符串类型标识
audience.add_users('mobile_advertiser_id', users)

方案二:升级SDK到最新版本

较旧的Facebook Ads Python SDK版本中,CustomAudience.Schema确实没有MOBILE_ADVERTISER_ID这个属性。你可以通过pip升级到最新版来解决:

pip install --upgrade facebookads

升级完成后,再使用CustomAudience.Schema.MOBILE_ADVERTISER_ID就能正常调用了。

2. 为什么Python SDK不需要显式传入ACCESS_TOKEN?

Facebook Ads Python SDK采用了全局配置复用的设计,不需要在每个API调用中重复传入token,它会通过以下几种方式自动获取认证信息:

  • 全局Api初始化:在代码开头先初始化全局Api实例,后续所有广告对象操作都会自动继承这个配置:

    from facebookads.api import FacebookAdsApi
    from facebookads.adobjects.customaudience import CustomAudience
    
    # 初始化API认证信息
    FacebookAdsApi.init(
        access_token='你的ACCESS_TOKEN',
        app_id='你的APP_ID',
        app_secret='你的APP_SECRET'
    )
    
    # 后续创建CustomAudience对象无需再传token
    audience = CustomAudience('custom_audience_id')
    
  • 环境变量自动读取:你可以设置FACEBOOK_ACCESS_TOKEN、FACEBOOK_APP_ID、FACEBOOK_APP_SECRET这三个环境变量,SDK启动时会自动加载这些值。

  • 本地配置文件:SDK还支持读取~/.facebookads/facebookads.yml配置文件中的认证信息,格式如下:

    access_token: '你的ACCESS_TOKEN'
    app_id: '你的APP_ID'
    app_secret: '你的APP_SECRET'
    

如果没有通过以上任何方式配置token,后续代码还是会触发认证错误,只是报错点不在add_users这一步而已,所以建议你先完成全局API初始化,避免后续踩坑。


内容的提问来源于stack exchange,提问作者CLO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:26:49