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

FCM通知发送代码长期停用后突然返回301错误求助

错误原因分析

301状态码代表永久重定向,核心原因是你当前使用的FCM旧端点https://fcm.googleapis.com/fcm/send已被谷歌永久迁移,不再作为有效请求入口。谷歌在近期逐步完成了Legacy FCM HTTP API的退役前置配置,旧端点会被强制重定向到新的FCM HTTP v1 API端点。

修复方案

方案一:迁移至FCM HTTP v1 API(推荐,符合谷歌长期支持策略)

  1. 更新请求URL
    将原URL替换为FCM v1 API的标准端点,格式如下:

    Uri.parse('https://fcm.googleapis.com/v1/projects/你的Firebase项目ID/messages:send')
    

    其中你的Firebase项目ID需要替换为你在Firebase控制台中对应的项目ID。

  2. 替换Authorization认证方式
    Legacy API使用的key=你的服务器密钥已不再适用于v1 API,需要改用OAuth 2.0访问令牌。你可以通过两种方式获取:

    • 使用Firebase Admin SDK(推荐):SDK会自动处理令牌的获取与刷新,无需手动编写请求逻辑。
    • 手动请求令牌:通过服务账号密钥向https://oauth2.googleapis.com/token发送POST请求,grant_type指定为urn:ietf:params:oauth:grant-type:jwt-bearer,生成有效令牌后,将Authorization头设置为Bearer 你的访问令牌。
  3. 调整请求体格式
    v1 API的请求体结构与Legacy API不同,示例格式如下:

    final data = {
      "message": {
        "token": "目标设备的FCM令牌",
        "notification": {
          "title": "通知标题",
          "body": "通知内容"
        },
        "data": {
          "custom_key": "custom_value"
        }
      }
    };
    

方案二:临时兼容(不推荐,Legacy API即将停用)

若需临时恢复运行,可尝试将请求URL调整为https://fcm.googleapis.com/v1/fcm/send,但此方式仅为临时过渡,谷歌已宣布Legacy FCM HTTP API将于2024年6月20日完全停用,最终仍需迁移至v1 API。

代码示例(使用Firebase Admin SDK简化实现)

如果使用Flutter/Dart环境,可引入firebase_admin包,简化通知发送逻辑:

import 'package:firebase_admin/firebase_admin.dart';
import 'package:firebase_admin/messaging.dart';

void sendNotification() async {
  final app = FirebaseAdmin.instance.app();
  final messaging = Messaging(app);
  
  try {
    await messaging.send(Message(
      token: "目标设备令牌",
      notification: Notification(
        title: "通知标题",
        body: "通知内容",
      ),
      data: {"key": "value"},
    ));
    log.log('sendNotificationG successfully done');
  } catch (e) {
    log.log('Error: sendNotificationG failed - $e');
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:22:42