Google Drive API - 权限 - 超出了限额。用户留言:对不起,您已超出共享配额

时间:2015-04-14 14:52:25

标签: google-drive-api

我使用Google Drive API以编程方式创建和共享文档。昨天我开始收到每条插入权限请求的错误消息:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
     "domain" : "usageLimits",
     "location" : "user.sharing",
     "locationType" : "other",
     "message" : "Rate limit exceeded. User message: \"Sorry, you have exceeded your sharing quota.\"",
     "reason" : "userRateLimitExceeded"
     } ],
  "message" : "Rate limit exceeded. User message: \"Sorry, you have exceeded your sharing quota.\""
}

我仍然可以以编程方式创建文档,但插入权限的请求总是失败。

这是通过服务帐户完成的,其理念是服务帐户将为应用程序管理这些文档,并根据需要与授权用户共享。

在插入大约50-100个权限后,错误开始发生。我做过一些研究,听起来可能有一个"功能"在Google Drive API中限制了可插入的权限数量。有没有办法解决这个限制?


更新

为了记录,我每天可以创建51个权限。创建第52个权限始终会在24小时内失败。不幸的是,这种限制使权限API对服务帐户完全无用。

4 个答案:

答案 0 :(得分:4)

正如@zdegenr所说,我也经历过每24小时只能创建约50个权限。我可以通过sendNotificationEmails参数https://developers.google.com/drive/v2/reference/permissions/insert禁用发送通知电子邮件来解决此问题。

通过这种配置,我不再符合配额......

答案 1 :(得分:1)

尝试https://www.google.com.ph/search?q=you+have+exceeded+your+sharing+quota&oq=you+have+exceeded+your+sharing+quota&aqs=chrome..69i57&sourceid=chrome&es_sm=93&ie=UTF-8结果中有几条建议,包括请求支持的机制。它是速率限制错误之一,在这种情况下会减慢,或者是每日配额问题,在这种情况下请求更高的配额。尽管谷歌文档说的话,如果你获得了速率限制,那么做指数退避,因为它会谋杀你的吞吐量。而是将您的请求限制在每3秒左右一次,然后加速或减速直到它们消失。

答案 2 :(得分:0)

这里是.NET的实现

var permissionsBody = new Google.Apis.Drive.v3.Data.Permission()
{
    Type = "user",
    Role = "reader",
    EmailAddress = "emailAddress",
 };
 var permission = _service.Permissions.Create(permissionsBody, fileId);
 permission.SendNotificationEmail = false;
 permission.Execute();

答案 3 :(得分:-1)

您可能达到每秒限额。您一次只能提出这么多请求。实施Exponential Backoff,这样当你的请求失败时,你会在重新尝试之前给它一点时间。它应该减少您看到的速率限制错误的数量。