2017-07-26 13 views
1

を超えています。アプリケーション上にあるユーザーの変更を受け取るチャンネルを作成しています。主な問題は、2-3のwebhooksの後に、ユーザーがクォータの制限を超えたというエラーが表示されることです。私は(私はngrok上でそれを見た)2ポストメッセージを受信したため、センスがないのGoogleドライブのAPIクォータが

私は、ドライブのAPIおよびクォータGoogleのコンソール上に行ってきましたしました。 Webhookを受け取るたびに、クエリの量は500増加します。ユーザーが2回変更して2つのWebhookを受け取ると、クエリの数はGoogleが許可する1000を超え、そのエラーが表示されます。私は、チャネルを有効コードです

:これはなぜ

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

:これは誤りである

​​

@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(); 
    } 

そして、次の一つはウェブフックですハプニング?

答えて

0

コードに誤りがありました。私は、次のように変更しなければならなかった:私は無限ループを強制的に、すべてのループ上の新しいスタートページトークンを要求したため、クエリの

PageToken = changes.getNewStartPageToken(); 

pageToken = changes.getNextPageToken(); 

に膨大な量でした。

0

あなたが遭遇したエラーは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にアクセスして問題を解決することもできます。

関連する問題