You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Web FCM:控制台可收消息,REST API报InvalidRegistration失败

解决Flutter Web FCM REST API InvalidRegistration问题

排查步骤

  • 核对请求格式
    单个token推送必须用to字段,别用批量的registration_ids数组。正确的请求体示例:

    {
      "to": "你的设备注册token",
      "notification": {
        "title": "测试推送",
        "body": "测试内容"
      },
      "webpush": {
        "headers": {
          "Urgency": "high"
        }
      }
    }
    

    把单个token塞到registration_ids里会直接触发InvalidRegistration错误。

  • 检查token本身
    确保复制的token和控制台测试的完全一致,没有多余空格、换行,代码里传递时也没被意外转义。可以直接把控制台用的token粘到Postman里发请求,排除复制或代码序列化问题。

  • 验证请求头权限
    请求头的Authorization必须是key=你的服务器端密钥,这个密钥要从Firebase控制台「项目设置」→「云消息传递」里拿,别用Web应用的API密钥,必须用服务器专用的那个。

  • 匹配插件与Flutter版本
    Flutter 3.0.7要搭配适配的firebase_messaging_web版本,比如锁定firebase_messaging: ^14.0.0,避免版本不兼容导致token生成异常。

  • 检查Firebase配置
    确认firebase_options.dart里的Web应用配置正确,同时Firebase控制台中该Web应用的云消息传递功能已启用,传统API或HTTP v1 API权限正常。

  • 切换端点测试
    如果用的是传统端点https://fcm.googleapis.com/fcm/send,可以试试HTTP v1端点https://fcm.googleapis.com/v1/projects/你的项目ID/messages:send,后者用OAuth2令牌授权,可能绕过一些格式或权限坑。

快速验证动作

  1. 用Postman手动发请求,排除代码里的请求组装错误;
  2. 调用FirebaseMessaging.instance.getToken()重新拿一次token,替换后再测试;
  3. 查看浏览器控制台的FCM日志,有没有服务工作者注册失败、token获取警告这类问题。

内容的提问来源于stack exchange,提问作者Hendrik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:10:34