从旧版FCM API迁移至HTTP v1时遇400错误:无效注册令牌
FCM HTTP v1 API迁移:注册令牌无效错误的排查解决步骤
我正在从旧版FCM API迁移到FCM HTTP v1 API集成推送通知,目前遇到错误提示:The registration token is not a valid FCM registration token。相关情况如下:
- 已通过Google OAuth Playground生成OAuth令牌,使用的是Firebase测试项目的客户端ID与密钥
- 请求为POST类型,URL为
https://fcm.googleapis.com/v1/projects/cedar-freedom-396911/messages:send - 请求头的Authorization字段已携带生成的OAuth令牌
- 该安卓注册令牌在旧版FCM API中可正常使用,但在v1 API中报错
排查解决步骤
1. 修正请求体格式
FCM v1 API的请求体结构和旧版差异极大,旧版的to字段在v1中必须嵌套在message.token节点下,正确的请求体示例如下:
{ "message": { "token": "你的安卓注册令牌", "notification": { "title": "测试推送", "body": "这是一条v1 API测试消息" }, "android": { "notification": { "sound": "default" } } } }
如果仍沿用旧版{"to": "...", "notification": {...}}的格式,会直接触发令牌无效的错误。
2. 验证OAuth令牌的权限范围
在OAuth Playground生成令牌时,必须勾选正确的权限:
- 选择
https://www.googleapis.com/auth/firebase.messaging权限 - 确保授权的项目是当前使用的
cedar-freedom-396911项目
生成令牌后,可通过https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=你的令牌验证权限是否包含firebase.messaging。
3. 确认注册令牌的项目归属
即使令牌在旧版API可用,也要确认该令牌对应的安卓应用属于cedar-freedom-396911项目:
- 登录Firebase控制台,进入该项目的「云消息传递」→「应用」页面
- 检查安卓应用的包名是否和生成令牌的应用包名完全一致
- 若应用是刚添加到项目的,需等待数分钟让令牌同步到v1 API系统
4. 检查请求头格式
Authorization头必须带有Bearer前缀,格式为:Authorization: Bearer 你的OAuth令牌,不能遗漏Bearer或写错大小写。
5. 排查令牌有效性
- OAuth Playground生成的令牌默认有效期约1小时,若使用的是旧令牌,重新生成新的再测试
- 检查Firebase项目的服务账号是否被禁用,或客户端密钥是否有变更
内容的提问来源于stack exchange,提问作者Gopal Mehra
相关产品推荐
相关产品推荐

