如何使用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
相关产品推荐
相关产品推荐

