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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:01:16