Google Drive API是使用“服务帐户”授权的,而不是普通的“人类用户”。谷歌目前没有办法提高服务帐户的15 GB限制,也没有购买额外空间的机制。一旦你用完了你的标准空间分配,你将被阻止上传任何额外的文件。 人类/普通G-Suite用户也可以获得标准的15 GB,但可以通过简单的选项将其增加到100 GB或更高,只需几分钱。 那么,如何根据人工帐户而不是服务帐户的存储配额上传文件,以便您可以拥有所需的所有空间?其实很简单!只是没有很好的记录。..
解决方案:
此解决方案是配置您的服务帐户以 * 模拟 * 人类帐户。这意味着您仍然使用服务帐户对Drive API进行身份验证,但服务帐户已被授权代表人工帐户进行操作,并且存储空间将从该用户的配额中分配。 Prep:这很重要。Carefully review the instructions here to make sure your service account is set up correctly for impersonation。任何偏离都会给你带来随机错误,这会让你沮丧,浪费时间。服务帐户需要在Google IAM Console中启用DwD(domain-wide-delegation),并且需要允许它访问Google Admin site的API客户端访问页面中的Drive范围。 现在您的服务帐户已经正确设置,要模拟一个常规帐户,您只需要在创建JWT客户端时指定人工帐户的电子邮件地址。 在NodeJS中,它看起来像这样(注意最后一个参数): let jwtClient = new GoogleApi.auth.JWT( service_account_email, null, private_key, ['https://www.googleapis.com/auth/drive'], 'impersonated_user@mydomain.com');
1条答案
按热度按时间58wvjzkj1#
背景:
Google Drive API是使用“服务帐户”授权的,而不是普通的“人类用户”。谷歌目前没有办法提高服务帐户的15 GB限制,也没有购买额外空间的机制。一旦你用完了你的标准空间分配,你将被阻止上传任何额外的文件。
人类/普通G-Suite用户也可以获得标准的15 GB,但可以通过简单的选项将其增加到100 GB或更高,只需几分钱。
那么,如何根据人工帐户而不是服务帐户的存储配额上传文件,以便您可以拥有所需的所有空间?其实很简单!只是没有很好的记录。..
解决方案:
此解决方案是配置您的服务帐户以 * 模拟 * 人类帐户。这意味着您仍然使用服务帐户对Drive API进行身份验证,但服务帐户已被授权代表人工帐户进行操作,并且存储空间将从该用户的配额中分配。
Prep:这很重要。Carefully review the instructions here to make sure your service account is set up correctly for impersonation。任何偏离都会给你带来随机错误,这会让你沮丧,浪费时间。服务帐户需要在Google IAM Console中启用DwD(domain-wide-delegation),并且需要允许它访问Google Admin site的API客户端访问页面中的Drive范围。
现在您的服务帐户已经正确设置,要模拟一个常规帐户,您只需要在创建JWT客户端时指定人工帐户的电子邮件地址。
在NodeJS中,它看起来像这样(注意最后一个参数):
let jwtClient = new GoogleApi.auth.JWT( service_account_email, null, private_key, ['https://www.googleapis.com/auth/drive'], 'impersonated_user@mydomain.com');
当您的Drive API脚本现在上传文件时,这些文件将由该普通用户拥有,并且空间将从其配额中分配。增加这一点很简单,任何管理员都可以完成,也可以联系G-Suite支持。