Facebook Graph API 中获取广告账户列表的正确用法

Facebook Graph API 中获取广告账户列表的正确用法

本文详解如何正确调用 facebook graph api 获取用户关联的广告账户(adaccounts),解决因误用已废弃路径 `/adaccountgroups` 导致的 “unknown path components” 错误,并提供 sdk 调用示例与关键注意事项。

Facebook 官方文档在历史版本中曾短暂提及 /adaccountgroups 路径,但该端点从未正式上线,属于文档错误或遗留占位内容。实际开发中,若调用 GET /me/adaccountgroups,Graph API 会明确返回错误:Unknown path components: /adaccountgroups —— 这表示服务器根本不识别该路径。

要获取当前用户(/me)所拥有或有权限访问的广告账户列表,唯一有效且受支持的端点是 /me/adaccounts,对应 Marketing API 的 AdAccount 边缘(edge)。该接口返回一个包含多个 AdAccount 对象的数组,每个对象含 id、name、account_status 等关键字段。

以下是使用 Facebook PHP SDK v5+ 的正确调用方式(适配 v13.0 及以上 Graph 版本):

白果AI论文

白果AI论文

论文AI生成学术工具,真实文献,免费不限次生成论文大纲 10 秒生成逻辑框架,10 分钟产出初稿,智能适配 80+学科。支持嵌入图表公式与合规文献引用

下载

use Facebook/Facebook;
use Facebook/Exceptions/FacebookResponseException;
use Facebook/Exceptions/FacebookSDKException;

$fb = new Facebook([
    'app_id'                => '621201298943758',
    'app_secret'            => 'f0aa4ae743ef.................',
    'default_graph_version' => 'v13.0', // ⚠️ 务必升级至当前稳定版,v2.5 已废弃多年
    'default_access_token'  => 'EAAI0ZBrLB7w4BAIUyoGjSB50ZBsXbPxYfCjk6WxPQIa.................................',
]);

try {
    $response = $fb->get('/me/adaccounts'); // ✅ 正确路径:/me/adaccounts
    $graphEdge = $response->getGraphEdge();

    foreach ($graphEdge as $account) {
        echo "ID: " . $account['id'] . "/n";
        echo "Name: " . $account['name'] . "/n";
        echo "Status: " . $account['account_status'] . "/n";
        echo "---/n";
    }

} catch (FacebookResponseException $e) {
    error_log('Graph API Error: ' . $e->getMessage());
    // 示例:Error 100 - Unsupported get request. Object with ID 'me' does not exist
} catch (FacebookSDKException $e) {
    error_log('SDK Error: ' . $e->getMessage());
}

? 关键注意事项

  • API 版本必须匹配:将 ‘default_graph_version’ 显式设为 ‘v13.0’ 或更高(如 ‘v19.0’),旧版(如 v2.5)不仅不支持 /me/adaccounts 的完整功能,还可能因权限模型变更导致鉴权失败;
  • 访问令牌需具备相应权限:确保 access token 拥有 ads_management 权限,且用户已授权该应用管理其广告账户;
  • 无 adaccountgroups 实体:Facebook Marketing API 中不存在“广告账户组”(Ad Account Group)这一资源类型,切勿尝试构造 /adaccountgroups、/me/adaccountgroups 或 /act_{id}/adaccountgroups 等路径;
  • 分页处理:当用户关联大量广告账户时,响应默认仅返回 25 条,需通过 after 游标参数处理分页($graphEdge->getNextPage());
  • 调试建议:使用 Graph API Explorer 手动测试 GET /me/adaccounts?fields=id,name,account_status,确认 token 权限与响应结构后再集成到代码中。

简言之:忘掉 adaccountgroups,坚定使用 /me/adaccounts —— 这是获取用户广告账户 ID 列表的唯一标准路径。

https://www.php.cn/faq/1976469.html

发表回复

Your email address will not be published. Required fields are marked *