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

Python调用Facebook API获取Ad Sets数据时遇400错误求助

Facebook Business SDK调用get_insights返回400错误(Code 100, Subcode 33)

我需要从公司Facebook广告账号获取数据用于AI算法任务,使用facebook_business库编写代码时,调用AdSet的get_insights方法抛出异常。

代码示例(已隐藏敏感信息)

import facebook_business
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adset import AdSet
from facebook_business.adobjects.campaign import Campaign

access_token = 'hidden'###token to get my APP in AP FB
app_secret = 'hidden'###secret ID of my app
app_id = 'hidden'##id of my app

FacebookAdsApi.init(access_token=access_token, app_secret=app_secret, app_id=app_id)
account_id = '10205819408979407'## the account ID I'd like to scrap
ad_account = AdAccount(account_id)

ad_sets = ad_account.get_ad_sets(fields=[
    AdSet.Field.id,
    AdSet.Field.name,
    AdSet.Field.created_time,
    AdSet.Field.targeting,
    AdSet.Field.daily_budget,
    AdSet.Field.optimization_goal,
    # Add other desired parameters
])

for ad_set in ad_sets:
    ad_set_id = ad_set[AdSet.Field.id]
    ad_set_name = ad_set[AdSet.Field.name]
    ad_set_created_time = ad_set[AdSet.Field.created_time]

    # Retrieve reach, frequency, and impressions metrics
    ad_set_insights = ad_set.get_insights(fields=[
        'reach',
        'frequency',
        'impressions'
    ])
    for insight in ad_set_insights:
        reach = insight['reach']
        frequency = insight['frequency']
        impressions = insight['impressions']

        # Process the retrieved data as needed
        print(f"Ad Set ID: {ad_set_id}")
        print(f"Ad Set Name: {ad_set_name}")
        print(f"Creation Time: {ad_set_created_time}")
        print(f"Reach: {reach}")
        print(f"Frequency: {frequency}")
        print(f"Impressions: {impressions}")
        print("---")

异常信息(已隐藏敏感ID)

Message: Call was not successful
Method:  GET
Path:    https://graph.facebook.com/v16.0/10205819408979407/insights
Params:  {'fields': 'reach,frequency,impressions'}
Status:  400
Response:
{
  "error": {
    "message": "Unsupported get request. Object with ID 'hidden' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api",
    "type": "GraphMethodException",
    "code": 100,
    "error_subcode": 33,
    "fbtrace_id": "AjpZMc8BkQQQMucBcwr1i_W"
  }
}

已尝试操作

  • 验证存储Facebook广告数据的账号(已完成验证但错误仍存在)
  • 获取广告管理器中所有数据的管理员权限
  • 为token配置ads_read、ads_management和business_management权限

注:account_id并非我个人Facebook账号ID,而是数据所属账号的ID。


解决方案

  • 修正账号ID格式:Facebook广告账号ID必须以act_为前缀,将代码中的account_id改为act_10205819408979407,这是最常见的触发该错误的原因。
  • 确认Token有效权限:调用/me/permissions接口检查当前Token的实际权限,确保ads_read权限已启用且未过期。注意业务场景下需使用系统用户Token而非个人用户Token,避免权限范围受限。
  • 关联应用与广告账号:确保你的Facebook应用已被添加到公司广告账号的授权应用列表中,同时持有Token的账号需具备广告账号的分析师或管理员角色,且完成双重验证。
  • 匹配SDK与API版本:检查facebook_business库版本是否与使用的v16.0 Graph API兼容,建议升级到最新稳定版避免兼容性问题。
  • 直接调试API请求:先在Graph Explorer中测试act_<账号ID>/insights?fields=reach,frequency,impressions,确认请求正常后再迁移到代码中,排除代码逻辑问题。

内容的提问来源于stack exchange,提问作者DAVI AMÉRICO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:57:45