首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >超过Google Drive API配额

超过Google Drive API配额
EN

Stack Overflow用户
提问于 2017-07-26 18:48:38
回答 1查看 1.8K关注 0票数 1

我正在创建一个通道,用于接收应用程序中用户的更改。主要的问题是,在2-3个网络挂钩之后,我收到一个错误,说用户已经超过配额限制。

这没有任何意义,因为我只收到了2条post消息(我在ngrok上看到的)。

我已经在google控制台上找到了驱动器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();
    }

下面是webhook:

    @POST
    @Path("/webhook")
    public void webhook(@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();
        String pageToken = savedPageToken;

        while (pageToken != null) {
            ChangeList changes = service.changes().list(pageToken).execute();

            for (Change change : changes.getChanges()) {
                Log.info("Change found for file: " + change.getFileId());
            }
            if (changes.getNewStartPageToken() != null) {
                savedPageToken = changes.getNewStartPageToken();
            }
            pageToken = changes.getNewStartPageToken();
        }
        response.setStatus(200);
    }

这是错误:

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"
}

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-27 18:57:59

代码中有一个错误。我不得不更改以下内容:

PageToken = changes.getNewStartPageToken();

pageToken = changes.getNextPageToken();

大量的查询是因为我在每次循环中都会请求一个新的起始页令牌,这迫使了一个无限循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45324747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档