gpt4 book ai didi

node.js - 如何解决使用服务帐户上传时 Google Drive 存储空间超出的问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:08 24 4
gpt4 key购买 nike

如果您使用 Google Apps for Work(也称为 G-Suite)并通过 Drive API 将文件上传到 Google 云端硬盘,您最终会发现出现如下错误消息:

Error: The user's Drive storage quota has been exceeded.

阅读下文,了解发生这种情况的原因以及解决方法。

最佳答案

背景:

Google Drive API 使用“服务帐户”而非常规“人类用户”进行授权。 Google 目前没有办法增加服务帐户的 15GB 限制,也没有购买额外空间的机制。一旦您用完标准空间分配,您将无法上传任何其他文件。

人类/普通 G-Suite 用户也可以获得标准的 15GB,但只需几分钱即可通过简单的选项将其增加到 100GB 或更多。

那么,如何根据人工帐户而不是服务帐户的存储配额上传文件,以便获得所需的空间?其实很简单!只是没有很好的记录...

解决方案:

此解决方案是将您的服务帐户配置为模拟人类帐户。这意味着您仍然使用服务帐户对 Drive API 进行身份验证,但服务帐户被授权代表人工帐户进行操作,并且存储空间将从该用户的配额中分配。

准备:这很重要。 Carefully review the instructions here to make sure your service account is set up correctly for impersonation 。任何偏离这一点都会给你带来随机错误,这会让你感到沮丧并浪费时间。服务帐户需要在 Google IAM Console 中启用 DwD(域范围委托(delegate))并且需要允许访问 Google Admin site 的 API 客户端访问页面中的 Drive 范围。 .

现在您的服务帐户已正确设置,要模拟常规帐户,您只需在创建 JWT 客户端时指定人工帐户电子邮件地址即可。

在 NodeJS 中,它看起来像这样(注意最后一个参数):

让 jwtClient = new GoogleApi.auth.JWT(
服务帐户_电子邮件,
无效的,
私钥,
['https://www.googleapis.com/auth/drive'],
'impersonated_user@mydomain.com');

对于其他语言,请参阅 Google 官方文档了解如何模拟用户。

当您的 Drive API 脚本现在上传文件时,这些文件将归该普通用户所有,并且空间将从其配额中分配。增加此值很简单,任何管理员都可以完成或通过联系 G-Suite 支持人员来完成。

关于node.js - 如何解决使用服务帐户上传时 Google Drive 存储空间超出的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40535355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com