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

如何在Node.js环境下获取Firebase Storage图片URL的访问token

解决方案

错误原因

你当前使用的firebase/storage是面向浏览器端的Web SDK,不支持Node.js服务端环境,因此会出现getDownloadURL is not a function的报错。

正确实现方案

使用专为Node.js服务端设计的Firebase Admin SDK即可生成带签名token的可访问URL,和你需要的效果完全一致。

步骤1:安装依赖

npm install firebase-admin

步骤2:初始化Firebase Admin SDK

首先进入Firebase控制台,在「项目设置」-「服务账号」页下载Node.js对应的服务账号密钥JSON文件,放到你的项目目录中,然后编写初始化代码:

const admin = require('firebase-admin');
// 替换为你自己的服务账号密钥文件路径
const serviceAccount = require('./serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  // 替换为你的存储桶名称,和你现有URL里的bucket一致
  storageBucket: 'first-project-17ec7.appspot.com'
});

const storageBucket = admin.storage().bucket();

步骤3:生成可访问的签名URL

Admin SDK通过getSignedUrl方法生成带token的可访问链接,参数支持自定义访问权限、过期时间等:

async function getAccessibleFileUrl(filePath) {
  // filePath为文件在存储桶中的相对路径,你示例的lp.png直接传'lp.png'即可
  const file = storageBucket.file(filePath);
  const [downloadUrl] = await file.getSignedUrl({
    action: 'read',
    // 可自定义过期时间,示例为长期有效,也可写为'1h'(1小时)、'3d'(3天)等格式
    expires: '2099-12-31'
  });
  console.log(downloadUrl);
  return downloadUrl;
}

// 调用测试
getAccessibleFileUrl('lp.png');

注意事项

  • Firebase Admin SDK使用服务账号凭证,默认跳过你配置的存储规则限制,不需要额外校验请求身份,符合服务端使用场景。
  • 生成的URL格式和你给出的示例完全一致,包含alt=media和签名token参数,可直接访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:07