使用Access Token授权FCM v1 API遇401错误,如何解决?
解决FCM v1 API调用401未认证错误
问题根源
你用的是Google登录返回的用户级Access Token,这个令牌仅用于验证用户身份、访问用户授权的个人Google服务(比如Drive、Gmail),没有权限调用FCM的服务端API。FCM v1 API要求的是服务账号级别的认证令牌,和你获取的用户令牌完全不是一回事。另外你请求头里的Bearer "MY Access Token"多了引号,这也是导致认证失败的小问题。
正确的解决方法
方法一:用gcloud命令行快速获取测试令牌(适合Postman临时测试)
- 安装并初始化gcloud CLI,关联你的Firebase项目
- 执行命令获取FCM专用的访问令牌:
gcloud auth application-default print-access-token
- 把令牌放到Postman请求头,格式注意不要加引号:
Authorization: Bearer 你获取到的令牌内容
方法二:用服务账号密钥生成长期可用令牌(适合代码集成)
- 打开Firebase控制台 → 项目设置 → 服务账号 → 点击「生成新的私钥」,下载JSON格式的密钥文件
- 用该密钥生成RS256签名的JWT,Payload需包含以下字段:
{ "iss": "密钥文件里的client_email", "sub": "密钥文件里的client_email", "aud": "https://fcm.googleapis.com/", "exp": 当前时间戳 + 3600(有效期1小时), "iat": 当前时间戳 }
- 将生成的JWT放入请求头:
Authorization: Bearer 生成的JWT令牌
额外注意事项
- 你之前使用DEVICE TOKEN的方式是正确的,保持请求体里的
"token":"DEVICE TOKEN"配置不变 - 确保你的服务账号拥有「Cloud Messaging Admin」权限,默认生成的服务账号已自带该权限,若缺失可到IAM控制台补充
内容的提问来源于stack exchange,提问作者wahyu
相关产品推荐
相关产品推荐

