已超出Google Drive API配额
问题描述:
我正在创建一个频道,用于接收我的应用程序上的用户所做的更改。主要的问题是,在2-3次webhooks之后,我收到一个错误,说用户已超出配额限制。已超出Google Drive API配额
这没有任何意义,因为我只收到2封邮件(我在ngrok上看到它)。
我已经在谷歌控制台上的驱动器API和配额。每次我收到一个webhook时,查询量增加了500个。所以,当用户进行两个更改并收到两个webhook时,查询数超过了google允许的1000,我收到该错误。
这就是代码,我使渠道:
@GET
@Path("/enable")
public void enable(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {
Credential credential = initFlow().loadCredential("user");
Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build();
Channel channel = new Channel();
channel.setId(UUID.randomUUID().toString());
channel.setType("web_hook");
channel.setAddress("https://389825dc.ngrok.io/GDriveRest/app/gdrive/webhook");
StartPageToken page = service.changes().getStartPageToken().execute();
GDrive.savedPageToken = page.getStartPageToken();
service.changes().watch(savedPageToken, channel).execute();
}
而下面一个是网络挂接:
这是错误:
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "User Rate Limit Exceeded",
"reason" : "userRateLimitExceeded"
} ],
"message" : "User Rate Limit Exceeded"
}
这是为什么发生了什么?
答
代码中有错误。我不得不改变如下:
PageToken = changes.getNewStartPageToken();
到
pageToken = changes.getNextPageToken();
查询量巨大是因为我在每个循环请求新的开始页面令牌,迫使一个无限循环。
答
您遇到的错误在this guide中讨论过。
Suggested actions:
- Raise the per-user quota in the Developer Console project.
- If one user is making a lot of requests on behalf of many users of a G Suite domain, consider a Service Account with authority delegation (setting the quotaUser parameter).
- Use exponential backoff.
您也可以尝试访问该SO post相关问题。