使用Python通过Facebook Ads API向自定义受众添加用户
修正后的代码及关键说明
代码问题梳理
- 未导入
MultiKeySchema类,导致代码报错 - 错误引用
CustomAudience类名(写成了customaudience.CustomAudience,实际已直接导入CustomAudience) - 电话号码格式不符合Facebook API要求(需为带国家码的E.164格式,比如
+13242424,或哈希后的值) - 手动调用API接口的方式冗余,可直接使用官方封装的
add_users方法
完整修正代码
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.customaudience import CustomAudience, MultiKeySchema # 补充导入MultiKeySchema from facebook_business.api import FacebookAdsApi # 替换为你的实际凭证 access_token = '你的access_token' app_secret = '你的app_secret' app_id = '你的app_id' account_id = 'act_你的账户ID' # 初始化API FacebookAdsApi.init(access_token=access_token, app_id=app_id, app_secret=app_secret) my_account = AdAccount(account_id) # 1. 创建自定义受众(如果已创建可跳过此步骤) params = { 'name': 'TEST', 'subtype': 'CUSTOM', 'description': 'Internal Data', 'customer_file_source': 'USER_PROVIDED_ONLY', } audience = my_account.create_custom_audience(fields=[], params=params) # 2. 定义用户数据 schema schema = [ MultiKeySchema.email, MultiKeySchema.phone, MultiKeySchema.ln, MultiKeySchema.fn ] # 3. 准备用户数据:注意电话号码需为E.164格式(带国家码) user_data = [ ["john.doe@example.com", "+13242424", "Doe", "John"] # 修正电话格式,统一姓名首字母大写 ] # 4. 格式化数据并添加到受众 payload = CustomAudience.format_params( schema, user_data, is_raw=True # 表示传入原始数据,API自动哈希处理 ) # 使用官方封装的add_users方法(比手动调用API更稳定) audience.add_users(params=payload)
关键注意事项
- 电话号码格式:必须是E.164标准格式,例如美国号码为
+1XXXYYYYYYY,中国号码为+8613XXXXXXXXX,否则API会拒绝处理 - 数据哈希:如果你的数据已经是SHA-256哈希后(全小写)的格式,可将
is_raw改为False - 权限要求:确保access_token拥有
ads_management和business_management权限,且已关联目标广告账户 - 批量限制:单次添加用户数不要超过10000条,超量需分批次处理
内容的提问来源于stack exchange,提问作者user20213068
相关产品推荐
相关产品推荐

