使用服务帐户

时间:2016-11-10 19:17:14

标签: node.js google-api google-drive-api google-apps

如果您正在使用Google Apps for Work(也称为G-Suite)并通过云端硬盘API将文件上传到您的Google云端硬盘,您最终会发现自己的错误消息如下:< / p>

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

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

1 个答案:

答案 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支持来完成。