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
相关产品推荐
相关产品推荐

