- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果您使用 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/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!