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

如何使用Firebase Admin SDK for PHP获取已发FCM消息统计数据

回答

关于Firebase Admin SDK for PHP是否内置消息统计方法

目前官方版本的Firebase Admin SDK for PHP没有内置获取已发送FCM消息统计数据的相关方法。该SDK的FCM模块当前仅封装了消息下发、主题订阅/退订、批量发送等发送侧能力,未覆盖FCM投递数据查询类接口,查阅SDK源码和官方功能清单均可确认这一点。

关于是否可借助SDK鉴权调用deliveryData接口

完全可以,不需要单独实现整套Google OAuth2鉴权流程,直接复用SDK内置的凭据管理能力即可完成鉴权调用,操作逻辑如下:

  • 确认你初始化SDK使用的服务账号拥有对应接口权限:服务账号绑定Firebase Admin基础角色默认就带有fcmdata.googleapis.com的调用权限,无需额外配置特殊权限
  • 复用SDK初始化时加载的服务账号凭据,直接生成接口调用需要的OAuth2访问令牌,不需要手动拼接JWT、走单独的令牌申请流程
  • 把获取到的访问令牌放到请求头的Authorization字段中,直接向目标接口发起GET请求即可

最简实现参考(基于SDK默认依赖的Guzzle HTTP客户端,无需额外安装依赖):

// 你项目中已经完成初始化的Firebase工厂实例
$firebaseFactory = (new \Kreait\Firebase\Factory())
    ->withServiceAccount('你的服务账号密钥文件路径.json');

// 从SDK实例中直接获取有效访问令牌
$accessToken = $firebaseFactory->createAccessToken()->getToken();

// 替换为你自己的项目ID、安卓应用ID
$requestUrl = 'https://fcmdata.googleapis.com/v1beta1/projects/你的Firebase项目ID/androidApps/你的安卓应用包名对应资源ID/deliveryData';

// 发起接口请求
$client = new \GuzzleHttp\Client();
$response = $client->get($requestUrl, [
    'headers' => [
        'Authorization' => sprintf('Bearer %s', $accessToken),
        'Accept' => 'application/json'
    ],
    // 按需传入接口支持的查询参数,比如分页大小、时间范围过滤条件等
    'query' => [
        'pageSize' => 100
    ]
]);

// 解析返回的统计数据
$deliveryStats = json_decode($response->getBody()->getContents(), true);

注意:该接口当前为v1beta1预览版本,请求参数、返回字段后续可能存在不兼容调整,生产环境使用建议做好异常兼容。如果需要查询iOS应用、Web应用的投递数据,替换请求URL中parent路径对应的应用资源标识即可。

内容的提问来源于stack exchange,提问作者ispite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:18:14