使用Firebase FCM V1调用返回403错误,请求技术支持
FCM V1接口403/404错误排查方案
一、403权限错误核心排查点
- 检查服务账号角色:用
gcloud auth application-default print-access-token获取的令牌,对应的服务账号必须拥有Cloud Messaging Admin或Firebase Admin角色。进入Firebase控制台「项目设置」→「服务账号」,找到应用默认服务账号,确认角色配置,未添加则补充Cloud Messaging Admin角色。 - 验证令牌权限范围:运行命令
gcloud auth application-default print-access-token | xargs curl -H "Authorization: Bearer {}" https://www.googleapis.com/oauth2/v3/tokeninfo,查看返回结果的scope字段是否包含https://www.googleapis.com/auth/firebase.messaging,无此范围则说明权限不足,重新配置服务账号后再获取令牌。 - 确认项目ID准确性:请求URL中的项目ID必须和Firebase控制台的项目ID完全一致(不是项目名称),比如你返回结果里的
languagechat-8e41c,要确保这个ID与服务账号绑定的项目匹配。
二、Postman 404错误排查
- 核对请求URL格式:FCM V1的正确请求URL为
https://fcm.googleapis.com/v1/projects/[你的项目ID]/messages:send,注意messages:send是英文冒号连接,无空格,URL中项目ID不能写错。 - 检查请求头与Body格式:必须添加
Content-Type: application/json和Authorization: Bearer [你的令牌]请求头,Body需为标准JSON格式,所有引号用英文双引号,避免语法错误。
三、React Native代码优化与调试
- 禁止客户端直接调用FCM V1接口:当前代码硬编码令牌存在严重安全风险,FCM V1接口应部署在后端服务器,客户端仅需将设备令牌上传至后端,由后端处理通知发送逻辑。
- 解析错误详情:修改代码,在获取response后添加错误信息解析,以便定位具体问题:
const response = await fetch('https://fcm.googleapis.com/v1/projects/ProjectCodeFromFirebase/messages:send', init); const responseData = await response.json(); // 新增这行 log.dev('response data', responseData); // 打印详细响应内容
内容的提问来源于stack exchange,提问作者Kaique Gomes
相关产品推荐
相关产品推荐

