Angular 5中调用Facebook Ads API获取商务管理账号广告账户遇问题
解决Facebook商务管理账号获取广告账户数据的问题
嘿,我来帮你搞定这个问题!你遇到的错误是因为adaccounts字段在Graph API v2.12之后就被官方废弃了,现在得用Business Management API里的新端点来获取数据,下面是具体的解决方案:
一、明确正确的API和端点
你需要使用Facebook Business Management API(这是专门针对商务管理账号操作的官方API),对应的有效端点有两个:
/<business-id>/owned_ad_accounts:获取商务管理账号拥有的广告账户/<business-id>/client_ad_accounts:获取商务管理账号管理的客户广告账户
建议使用最新的Graph API版本(比如v18.0),旧版本的兼容性问题会很多。
二、权限准备
确保你的应用已经申请并获得了以下必要权限(需要商务管理账号管理员给应用授权这些权限):
business_management:访问商务管理账号数据的基础权限ads_management:获取广告账户数据的核心权限
如果不确定token是否包含这些权限,可以用Facebook的Token Debug工具来验证。
三、Graph API Explorer测试步骤
- 打开Graph API Explorer,选择你创建的应用
- 选择最新的API版本(比如v18.0)
- 在请求地址栏输入:
/<你的商务管理账号ID>/owned_ad_accounts - 在「Fields」输入框添加你需要的字段,比如
id,name,currency,account_status - 确保使用的access token是拥有对应权限的管理员token,然后点击「Submit」
这样就能正常获取到广告账户数据了,不会再出现废弃字段的错误。
四、Angular 5中的代码示例
用Angular的HttpClient来发起请求,示例代码如下:
import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; @Injectable() export class FacebookAdsService { private apiVersion = 'v18.0'; constructor(private http: HttpClient) {} // 获取商务管理账号拥有的广告账户 getOwnedAdAccounts(businessId: string, accessToken: string) { const url = `https://graph.facebook.com/${this.apiVersion}/${businessId}/owned_ad_accounts`; const params = { access_token: accessToken, fields: 'id,name,currency,account_status' }; return this.http.get(url, { params }); } }
调用这个方法时,记得传入正确的商务管理账号ID和有效的access token。
注意事项
- 不要使用v2.12这类旧API版本,Facebook会持续废弃旧接口,尽量保持API版本在v17.0及以上
- 如果仍然报错,优先检查access token的权限是否完整,以及商务管理账号ID是否正确
- 确保你的应用已经在商务管理账号中被添加为关联应用
内容的提问来源于stack exchange,提问作者Stevie Star
相关产品推荐
相关产品推荐

