我不确定这种情况何时开始发生(我最近相信)。如果您依赖此处记录的步骤,这是重大变更:
https://msdn.microsoft.com/en-us/office/office365/howto/sync-calendar-view
问题在于Office 365&如果您指定" odata.track-changes"有更多数据要提取,Outlook.com calendarview api似乎不再返回@ odata.nextLink。对于"喜欢"您的请求中的标题。
以下是重新发出问题的CURL请求...请确保在指定的时间范围内将请求作为至少50个事件的用户进行身份验证(以触发分页)。
curl -H "Authorization: Bearer <OMITTED>" -H "Accept: application/json; odata.metadata=none" -H "Prefer: odata.track-changes" "https://outlook.office.com/api/v2.0/me/calendarview?startdatetime=2016-06-16T00:00:00Z&enddatetime=2017-06-23T00:00:00Z"
当我发出此请求时,生成的响应有10个条目(即使至少有50个事件),并且响应没有@ odata.nextLink。它确实有一个@ odata.deltaLink。
是否有其他人遇到此问题?
答案 0 :(得分:0)
据我所知,它一直都是这样的。初始同步返回deltaLink
而不是nextLink
。您必须专门处理该初始同步请求,然后继续使用deltaToken
发出下一个请求。
- 初始同步请求:第一个同步请求设置同步状态。
- 初始同步响应:
- 检查&#34;偏好应用:odata.track-changes&#34;在响应头中确认同步尝试成功,资源支持同步。
- 如果同步尝试成功,初始响应始终包含带有deltaToken值的@ odata.deltaLink 。如果响应包含任何数据,请保存第二个请求的deltaToken值。
- 如果初始响应未成功,或者未返回任何指示指定日历视图中没有事件的数据,则此轮同步结束。
- 后续同步请求:使用上一个请求中的deltaToken或skipToken值发出下一个请求。请参阅第二个和第三个同步请求作为示例。
- 后续同步响应:
- 如果响应返回任何数据,并且在该时间范围内有更多数据要同步,则响应将包括@ odata.nextLink和skipToken值。保存skipToken以获取下一个同步请求。
- 返回步骤3,按照nextLink(如果有),在下一个同步请求中应用相应的skipToken值,并按照后续任何nextLink,直到您同步该日历的时间范围内的所有数据。
- 最终同步响应:当日历视图中的所有事件同步时,此轮中的最终响应将再次包括@ odata.deltaLink和deltaToken。保存deltaToken值以进行下一轮同步。
醇>