使用交换推送通知 https://msdn.microsoft.com/en-us/library/aa566188(v=exchg.80).aspx我一直在创建一项同步 Office365 用户的日历数据的服务。我一直在使用以下组合Office365 日历 REST API https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations(获取和管理日历)和 EWS API(订阅日历更改)。
我注意到最近 MS 为其订阅端点引入了预览 API。不过,这个 API 仍处于预览模式,我想暂时避免使用它。
一旦我完成了所有设置,问题是我无法在日历事件资源 (REST) https://msdn.microsoft.com/office/office365/APi/calendar-rest-operations#GeteventsGetaneventREST和EWS 日历项目资源 https://msdn.microsoft.com/en-us/library/office/aa564765(v=exchg.150).aspx这是在推送通知上返回的。这ItemId
对于 CalendarItem 和Id
对于 REST 事件有所不同。
当尝试更新我从 REST API 保存的事件时,这证明是有问题的,因为我找不到关联两者的好方法。
任何帮助是极大的赞赏!
Edit经过进一步挖掘,我实际上发现从 REST API 返回的日历(GET /calendars
) 看起来是Message
EWS 层次结构中的项目。因此,此端点不是返回实际的文件夹 ID,而是返回属于某个名为“公共视图”的文件夹的项目 ID。
我不确定为什么要这样设计,但 base64 编码 ID 的差异似乎非常小。我只是仍然找不到将两者联系起来的好方法。
事实证明,由于通过订阅 EWS 推送通知,我的 ID 不匹配Exchange2007
版本。Exchange2007_SP1
以及其他具有彼此兼容的 EwsId,因此这包括 Office365。
更换-
字符与/
and _
字符与+
允许我正确调用 Office365 API 资源。
最后,当拨打电话时获取日历 https://msdn.microsoft.com/office/office365/APi/calendar-rest-operations#GetcalendarsGetacalendarcollectionREST,API实际上正在返回Message
位于以下的项目类型Common Views
文件夹。因此,当尝试使用这些 ID 进行订阅时,EWS API 会抱怨我向其发送了 ItemID,而不是文件夹 ID。
谢天谢地我发现通过以下方式向 REST API 发出请求GET /calendars/ews_folder_id
一旦你正确地将 ID 转换为 URI 安全类型(参见上面的转换),实际上就可以工作了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)