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

如何批量撤销Firebase Storage特定文件夹/存储桶内所有文件的访问令牌

批量撤销Firebase Storage文件访问令牌的解决方案

首先,Firebase控制台目前没有内置的批量撤销特定存储桶/文件夹所有文件访问令牌的功能,只能通过控制台单个操作。但可以通过Firebase Admin SDK编程实现批量操作,以下是具体方案:

实现思路

通过Admin SDK遍历目标存储桶或文件夹下的所有文件,逐个调用revokeTokens()方法撤销其所有已生成的访问令牌。

Node.js示例代码

const { initializeApp } = require("firebase-admin/app");
const { getStorage } = require("firebase-admin/storage");

// 初始化Admin SDK(需提前配置服务账号密钥)
initializeApp();
const storage = getStorage();
const bucket = storage.bucket("your-bucket-name"); // 替换为你的存储桶名称
const folderPath = "target-folder/"; // 替换为目标文件夹路径,处理整个桶则留空

async function revokeAllTokensInFolder() {
  let nextPageToken = null;
  do {
    // 分页列出目标路径下的文件
    const [files, nextPage] = await bucket.getFiles({
      prefix: folderPath,
      pageToken: nextPageToken
    });
    nextPageToken = nextPage;

    // 批量执行令牌撤销
    const revokePromises = files.map(file => {
      console.log(`正在撤销文件: ${file.name}`);
      return file.revokeTokens();
    });

    await Promise.all(revokePromises);
    console.log(`完成当前页${files.length}个文件的令牌撤销`);
  } while (nextPageToken);

  console.log("所有目标文件的访问令牌已全部撤销");
}

// 启动操作
revokeAllTokensInFolder().catch(err => {
  console.error("撤销过程出错:", err);
});

注意事项

  • 确保服务账号拥有storage.objects.update权限(默认Admin SDK服务账号已具备该权限)。
  • 若文件数量极大,建议添加速率控制(比如每批处理后暂停几秒),避免触发API限流。
  • 令牌撤销后,旧的公开访问链接会立即失效,授权用户下次请求时会自动生成新的有效链接,不影响正常访问流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:52:01