Aar*_*esh 1 java spring webhooks push-notification google-drive-api
我已将谷歌驱动器集成到我的应用程序中。为了实现同步,我还按照链接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();
Run Code Online (Sandbox Code Playgroud)
在实际的 google 驱动器中进行更改时,我会在上面配置的 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");
Run Code Online (Sandbox Code Playgroud)
有人可以让我知道如何正确获取通知数据吗?我做错了什么吗?
这是另一个问题所陈述的相同问题,但尚未有正确的答案接收 Google Drive 推送通知
实际上,Webhook 通知中没有发送请求正文。因此,一旦更改到达回调 url,就可以通过向更改资源 uri 发出 get 请求来获取更改
Resource URI : https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=895&restrictToMyDrive=false&spaces=drive&alt=json
Run Code Online (Sandbox Code Playgroud)
或者可以使用以下代码以编程方式获取更改
String pageToken = channelInfo.getCurrPageToken();
List<Change> changes = service.changes().list(pageToken)
.execute().getChanges();
Run Code Online (Sandbox Code Playgroud)
谷歌推送通知文档可以清楚地提到这一点,而不是提到请求正文中出现的更改,这是造成混乱的原因
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |