超出了Google云端硬盘API的配额

我正在创建一个通道,以接收应用程序上用户的更改。主要问题在于,经过2-3次网络连接后,我收到一条错误消息,提示用户已超出配额限制。

那没有意义,因为我只收到2条帖子(我在ngrok上看到了)。

我在驱动器API和配额上进入了Google控制台。每当我收到一个webhook时,查询量就会增加500个。因此,当用户进行两次更改而我收到两个webhooks时,查询数超过了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"

}

为什么会这样呢?

回答:

代码中有错误。我必须更改以下内容:

PageToken = changes.getNewStartPageToken();

pageToken = changes.getNextPageToken();

大量查询是因为我在每个循环上都请求一个新的起始页令牌,从而强制进行无限循环。

以上是 超出了Google云端硬盘API的配额 的全部内容, 来源链接: utcz.com/qa/435324.html

回到顶部