Google云端硬盘通知请求正文为空

时间:2017-02-13 18:58:57

标签: java spring push-notification google-drive-api webhooks

我已将谷歌硬盘集成到我的应用程序中。为了实现同步,我还按照链接https://developers.google.com/drive/v3/web/push

中的步骤为每个帐户配置了推送通知

以下是为帐户的所有文件配置监视的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();

在实际的Google云端硬盘中进行更改时,我会在上面配置的webhook网址中收到通知。

但问题在于每次更改,我得到的标题与下面的标题相同,与手表调用的响应相同。 我没有收到与更改或请求正文相对应的任何正确的请求标头

//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

2 个答案:

答案 0 :(得分:2)

我不明白你为什么要查看webhook消息的标题。正如https://developers.google.com/drive/v3/reference/files/watch所述,您感兴趣的是身体。

获得更改文件的ID后,如果您需要更改内容的详细信息,可以使用修订https://developers.google.com/drive/v3/web/manage-revisions Feed查看详细信息。

答案 1 :(得分:1)

实际上没有在webhook通知中发送的请求正文。因此,只要更改到达回调网址,就会通过向更改资源uri发出get请求来获取更改

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

Google推送通知文档可以清楚地提到这一点,而不是提及请求正文中出现的更改,这是混淆的原因