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

部署Firebase云函数发送FCM时获取AccessToken失败

解决Firebase云函数推送iOS消息时的metadata.google.internal错误

错误根源

你遇到的getaddrinfo ENOTFOUND metadata.google.internal错误,是因为在云函数环境中手动指定了本地服务账号证书导致的。Firebase云函数运行在Google Cloud托管环境里,会自动加载内置的默认服务账号凭据,完全不需要手动导入本地的my-app-credentials.json文件。手动传入证书后,SDK会尝试访问本地元数据服务获取令牌,但云函数的环境逻辑不支持这种调用方式,从而触发错误。

修正后的代码

将admin.initializeApp简化为无参数调用,云函数会自动处理凭据配置:

import * as admin from "firebase-admin";

// 云函数环境下无需手动指定credential,直接初始化
admin.initializeApp();

const message: admin.messaging.Message = {
  notification: {
    title: "Test notification",
    body: "Sent from firebase cloud functions",
  },
  token: "<REDACTED>", 
};

admin.messaging().send(message)
  .then((response) => {
    console.log("Successfully sent message:", response);
  })
  .catch((error) => {
    console.error("Error sending message:", error);
  });

额外验证步骤

  • 确认权限配置:Blaze套餐下,云函数默认服务账号已拥有Cloud Messaging发送权限;若使用自定义服务账号,需确保其具备Firebase Cloud Messaging Admin角色
  • 检查设备token:iOS设备的APNs token可能过期,可通过Firebase控制台Compose页面再次验证token有效性(你已确认该方式可行,可排除token本身问题)
  • 重新部署测试:执行firebase deploy --only functions完成部署后,通过云函数控制台的测试功能触发函数,查看日志输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:27:43