【发布时间】:2017-03-11 18:21:42
【问题描述】:
我已订阅我的应用以收听 Google 推送通知。频道详细信息已保留。我可以从 google 接收通知到我的端点。
@PostMapping("/google/calendars/")
public void watch(HttpServletRequest request,
@RequestHeader(value = "X-Goog-Channel-ID", required = false) String googleChannelId,
@RequestHeader(value = "X-Goog-Channel-Token", required = false) String googleChannelToken,
@RequestHeader(value = "X-Goog-Channel-Expiration", required = false) String googleChannelExpiration,
@RequestHeader(value = "X-Goog-Resource-ID", required = false) String googleResourceId,
@RequestHeader(value = "X-Goog-Resource-URI", required = false) String googleResourceUri,
@RequestHeader(value = "X-Goog-Resource-State", required = false) String googleResourceState,
@RequestHeader(value = "X-Goog-Message-Number", required = false) String googleMessageNumber,
使用收到的信息我可以打开client 到谷歌服务。但我不知道如何更改。
googleChannelId=354a78aa-0cc0-4b5b-96c5-e54e03a51e68
googleChannelToken=<null>
googleChannelExpiration=Sat, 18 Mar 2017 17:01:56 GMT
googleResourceId=eVHbdUeaWhfQPpvJPU7VZRxYzUs
googleResourceUri=https://www.googleapis.com/calendar/v3/calendars/sergii_vlasiuk@ukr.net/events?maxResults=250&alt=json
googleResourceState=exists
googleMessageNumber=403802722
exists 表示 googleResourceId 已更改。
使用googleChannelId 加载我的频道详细信息并打开客户端。
- 如何在我的拉取更改请求中使用
googleResourceId(可能是请求示例)? - 理解是否正确:
not_exists表示资源被删除;exists表示资源已创建或编辑?
添加详细信息
我试过了
client.events().get(originalCalendarId, googleResourceId).execute()
地点:
-
client是具有正确标记的com.google.api.services.calendar.Calendar对象。 -
ginalCalendarId- 众所周知的谷歌日历 ID,用于订阅。 -
googleResourceId- 来自标头消息X-Goog-Resource-ID值。 ->404 未找到 { “代码”:404, “错误”:[{ “域”:“全球”, “未找到信息”, “原因”:“未找到” }], “未找到信息” }
【问题讨论】:
-
"X-Goog-Resource-State" 可以有声明的值:
sync,exists。 -
也许我应该使用
etag来映射更改数据的通知,或者谷歌为X-Goog-Message-Number提供API?
标签: java push-notification google-api google-calendar-api google-api-java-client