我是一名初级开发人员,试图找出Outlook365 REST API。
我正在使用office365 rest api从我的日历中同步我的活动。 在我第一次请求时,我从一个时间范围内获得所有事件。这将返回deltaToken。 之后,我将更多事件添加到我的日历中,并使用从我的调用返回的最后一个deltaToken进行另一个调用。此请求返回所有事件(包括新事件)和2个deltaTokens(第一个是我发送的,第二个是新的)。 我只想获得新活动,而不是所有活动。如果我使用上一个请求中的deltaToken发出请求,这是否意味着我已经同步了以前的所有事件,下一次调用不应该只获取新的/修改过的事件?
以下是回复。在我的回复中有2个deltaTokens可以吗?
{ “@ odata.context”:“https://outlook.office.com/api/beta/ $元数据#ME / CalendarView, “价值”:[事件清单], “@ odata.deltaLink”: “https://outlook.office.com/api/beta/Me/CalendarView/?startDateTime=2017-07-25T00%3a00%3a00Z&endDateTime=2017-09-01T00%3a00%3a00Z&deltatoken=GGXXX&%24deltatoken=GWXXX” }
答案 0 :(得分:0)
听起来你还没有敲定你的第一次同步。同步在API中的工作方式有点违反直觉。这不像检查deltaToken那样简单,看你是否已经完成。
原因是Prefer: odata.track-changes
始终的第一个请求返回deltaToken,即使还有更多结果。 docs在此处提供了更多详细信息,但一般顺序为:
Prefer: odata.track-changes
在日历视图中进行GET。Preference-Applied: odata.track-changes
标头。如果是这样,请获取deltaLink
并对其进行GET。nextLink
作为回应,请对此进行GET并重复。如果您获得deltaLink
,则同步完成。存储该值直到您下次同步。