【问题标题】:Firebase Admin Storage: The caller does not have permissionFirebase Admin Storage:调用者没有权限
【发布时间】:2021-09-22 17:20:06
【问题描述】:

我有一个项目使用 Firebase Admin 上的默认存储桶。

我有以下行:

const [url] = await blob.getSignedUrl({ action: 'read', expires: Date.now() + 60 * 1000, contentType: mimetype })

当调用我的 HTTPS 可调用函数时,上面的行会抛出以下错误:

Unhandled error Error: The caller does not have permission
    at Gaxios._request (/workspace/node_modules/gaxios/build/src/gaxios.js:129:23)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Compute.requestAsync (/workspace/node_modules/google-auth-library/build/src/auth/oauth2client.js:368:18)
    at async GoogleAuth.signBlob (/workspace/node_modules/google-auth-library/build/src/auth/googleauth.js:655:21)
    at async sign (/workspace/node_modules/@google-cloud/storage/build/src/signer.js:97:35) {
  name: 'SigningError'
} 

我做错了什么?

【问题讨论】:

  • 请提供上传文件的完整代码并检查firebase控制台中的安全规则
  • 这发生在 firebase admin SDK 上,所有规则都由管理员通过。并且所有规则都是开放的。

标签: javascript firebase google-cloud-storage


【解决方案1】:
  • 这里已经有一个开放的GitHub issue。如果这是 正是你在寻找什么,你可以通过解决方案 列在 GitHub 问题上:

    转到您项目的Cloud Console > IAM & admin > IAM,找到App Engine default service account 并将Service Account Token Creator 角色添加到该成员。这将允许您的应用为图像创建签名的公共 URL。

  • 如果它不适合您,请尝试更新 IAM 角色。来自 firebaseSA.json 文件查看关联的电子邮件是否具有以下角色:

    Firebase Admin SDK Administrator ,Service Agent, Service Account
    Token Creator ,Pub/Sub Publisher, Storage Admin
    
  • 如果它仍然不适合您,请尝试运行您的应用程序 另一个拥有所有可能的云存储的服务帐户 权限,有用吗?如果是,则意味着您当前的 服务需要额外的权限才能执行该功能。你 可以在Cloud Storage IAM Roles中查看要给予什么权限

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2021-08-30
    • 2019-08-08
    • 2017-04-04
    • 2019-08-06
    • 2020-02-26
    相关资源
    最近更新 更多