2017-02-13 23 views
0

我已將谷歌驅動器集成到我的應用程序中。爲了實現同步,我也通過遵循鏈接https://developers.google.com/drive/v3/web/pushGoogle驅動器webhook通知請求正文爲空

以下步驟設置推送通知每個帳戶的java代碼中的所有文件配置表爲帳戶

String uuid = UUID.randomUUID().toString(); 
       Channel channel = new Channel(); 
       channel.setId(uuid); 
       channel.setType("web_hook"); 
       channel.setAddress(env.getProperty("webhookUrl")); 
       StartPageToken pageToken = service.changes().getStartPageToken().execute(); 
       Channel response = service.changes().watch(pageToken.getStartPageToken(), channel).execute(); 

在作出改變實際的谷歌驅動器,我得到了上面配置的webhook url中的通知。

但問題是,對於每一個變化,我得到了以下頭它們是一樣的手錶電話& 我沒有得到相應的改變或請求主體的任何適當的請求頭的響應值相同

//Getting request headers 
    String resourceId = request.getHeader("X-Goog-Resource-ID"); 
    String resourceState = request.getHeader("X-Goog-Resource-State"); 
    String expiration = request.getHeader("X-Goog-Channel-Expiration"); 
    String resourceChanges = request.getHeader("X-Goog-Changed"); 
    String channelId = request.getHeader("X-Goog-Channel-ID"); 

有人能讓我知道如何正確地獲取通知數據?有什麼我做錯了嗎?

這裏是另一個問題表示了同樣的問題不具有正確的答案了Receiving Google Drive Push Notifications

回答

0

實際上沒有請求正文在webhook通知中發送。因此,只要改變在回調URL到達,變化是由一個GET請求改變資源URI

Resource URI : https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=895&restrictToMyDrive=false&spaces=drive&alt=json 

或者編程的變化可以通過使用下面的代碼

String pageToken = channelInfo.getCurrPageToken(); 
      List<Change> changes = service.changes().list(pageToken) 
        .execute().getChanges(); 

中獲取中獲取谷歌推送通知文檔可能已經提到了這一點,而不是提到變化出現在請求主體,這是造成混淆的原因

3

我不明白,爲什麼你正在尋找在網絡掛接消息的標題。這是你感興趣的機構,如https://developers.google.com/drive/v3/reference/files/watch所述。

如果您想要更改內容的詳細信息,可以使用修訂版https://developers.google.com/drive/v3/web/manage-revisions提要查看詳細信息。

+0

我沒有得到請求正文。由於某些奇怪的原因,我無法獲得資源的ID,因此它變爲空值。這可能嗎 ? –

+0

我正在使用Spring&這是我的回調帖子方法@RequestMapping(method = RequestMethod.POST) \t @ApiOperation(value =「處理webhook通知」,notes =「」,response = ApiResponse.class,tags = { \t 「}}) \t public void webhookNotification(HttpServletRequest request,HttpServletResponse response \t \t \t)throws IOException {。當我在此包含@RequestBody時,出現錯誤,它不存在 –

+0

請求正文爲空的任何原因? –