如果您正在使用Google Apps for Work(也称为G-Suite)并通过云端硬盘API将文件上传到您的Google云端硬盘,您最终会发现自己的错误消息如下:< / p>
Error: The user's Drive storage quota has been exceeded.
请阅读以下内容,了解发生这种情况的原因以及解决方法。
答案 0 :(得分:2)
<强>背景强>
Google Drive API授权使用&#34;服务帐户&#34;而不是常规&#34;人类用户&#34;。谷歌目前没有办法增加服务帐户的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(域范围授权),并且需要允许其访问Google Admin site的API客户端访问页面中的云端硬盘范围。
现在您的服务帐户已正确设置,要模拟常规帐户,您只需在创建JWT客户端时指定人工帐户电子邮件地址。
在NodeJS中它看起来像这样(注意最后一个参数):
let jwtClient = new GoogleApi.auth.JWT(
service_account_email,
null,
private_key,
['https://www.googleapis.com/auth/drive'],
'impersonated_user@mydomain.com');
对于其他语言,请参阅Google官方文档,了解如何冒充用户。
当您的Drive API脚本现在上传文件时,它们将由此常规用户拥有,并且将从其配额中分配空间。增加这一点是微不足道的,可以由任何管理员或联系G-Suite支持来完成。