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

使用Axios调用Firebase Cloud Messaging HTTP v1 API遇404错误求助

解决Axios调用FCM API返回404“请求实体未找到”的问题

核心排查方向

  • 确认项目ID正确性:替换URL中的<Project ID>为Firebase控制台项目设置里的实际项目ID(不是项目名称),项目ID格式为小写字母、数字加连字符,比如my-app-12345。
  • 检查端点格式:FCM v1 API的正确端点是https://fcm.googleapis.com/v1/projects/{project-id}/messages:send,确保:send后缀没有遗漏或写错(比如误写为/messages/send会直接返回404)。
  • 验证Access Token有效性:
    • 确保accessToken是通过Firebase服务账号密钥生成的,且拥有firebase.messaging.send权限。
    • 可以用curl直接测试token和端点是否正常:
      curl -H "Authorization: Bearer 你的AccessToken" https://fcm.googleapis.com/v1/projects/你的项目ID/messages:send -d '{"message":{"token":"你的设备令牌","notification":{"title":"Test","body":"Test Content"}}}' -H "Content-Type: application/json"
      
    • 如果curl请求成功,说明问题出在Axios代码或环境;如果curl也返回404,优先排查项目ID和token的有效性。
  • 简化请求头:Axios 1.7.7会自动为JSON请求设置Content-Type: application/json,可以尝试去掉手动设置的该头,避免潜在的格式冲突。
  • 排查网络环境:如果使用代理服务器,可能会修改请求URL导致404,建议用Postman或本地环境直接发送请求,排除网络拦截问题。

修正后的Axios示例代码

try {
    const response = await axios.post(
        'https://fcm.googleapis.com/v1/projects/your-real-project-id/messages:send',
        {
            message: {
                token: 'valid-device-token',
                notification: {
                    body: '测试消息内容',
                    title: '测试标题',
                },
            }
        },
        {
            headers: {
                'Authorization': `Bearer ${accessToken}`,
            },
        },
     );
     console.log('请求成功:', response.data);
 } catch (err) {
     console.error('请求失败详情:', err.response?.data || err.message);
 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:48:27