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

