Firebase Cloud Messaging REST API返回INVALID_KEY(401)错误求助
解决Firebase推送Postman请求返回INVALID_KEY(401)的问题
问题本质
你误用了Web Push公私钥——这组密钥是给前端订阅推送时用于加密通信的,不是调用FCM(Firebase Cloud Messaging)API的身份验证凭证,所以会触发401 INVALID_KEY错误。
正确的密钥类型及获取方式
你需要用以下两类密钥之一来验证FCM API请求:
1. 服务器密钥(Server Key)/ Cloud Messaging API密钥
获取路径:
- 打开Firebase控制台 → 进入目标项目 → 点击左侧菜单的「项目设置」→ 切换到「云消息传递」标签页
- 在该页面找到「服务器密钥」(或标注为「Cloud Messaging API (Legacy)」的密钥),复制即可。
2. 服务账号密钥(用于生成JWT令牌,适用于更安全的生产场景)
获取及使用步骤:
- 进入Firebase控制台 → 项目设置 → 「服务账号」标签页 → 点击「生成新的私钥」,下载JSON格式的密钥文件
- 用该文件生成JWT令牌(签名算法选RS256,audience设为
https://fcm.googleapis.com/,有效期不要超过1小时) - 请求时将JWT放在Authorization头,格式为
Bearer <生成的JWT>
Postman请求的正确配置
以服务器密钥为例:
- 请求URL:
https://fcm.googleapis.com/fcm/send - 请求方法:POST
- 请求头:
Content-Type: application/jsonAuthorization: key=<你的服务器密钥>
- 请求体示例(JSON格式):
{ "to": "<设备的推送令牌registration token>", "notification": { "title": "自定义通知标题", "body": "自定义通知内容" } }
你之前的操作问题总结
- 混淆了Web Push密钥与FCM API密钥的用途:Web Push公私钥仅用于前端
pushManager.subscribe()订阅推送时,和FCM建立加密通道,不能用于后端API的身份验证。 - 错误地将Web Push密钥放入API请求的Authorization头,导致FCM无法识别该密钥的合法性。
内容的提问来源于stack exchange,提问作者AdaLollA
相关产品推荐
相关产品推荐

