使用 Exchangepush notifications我一直在创建一个服务,该服务可同步来自 Office365 用户的日历数据。我一直在使用Office365 Calendar REST API(用于获取和管理日历)和 EWS API(用于订阅日历更改)的组合。
我注意到最近 MS 为他们的订阅端点引入了一个预览 API。但是,此 API 仍处于预览模式,我想暂时避免使用它。
一旦我有了一切设置,问题是我不能使calendar event resource (REST)和EWS CalendarItem resource之间的关联,在推送通知返回。ItemId
的 CalendarItem 和Id
的 REST 事件不同。
当尝试更新我从 REST API 保存的事件时,这证明是有问题的,因为我找不到一个好的方法将两者关联起来。
任何帮助非常感谢!
编辑经过进一步的挖掘,我实际上发现从 REST API(GET /calendars
)返回的日历似乎是 EWS 层次结构中的Message
项。因此,该端点不是返回实际的 Folder ID,而是返回属于某个名为“Common Views”的文件夹的 Item ID。
我不知道为什么事情是这样设计的,但是 base64 编码的 ID 的差异似乎很小。
因此,事实证明,由于通过Exchange2007
版本订阅 EWS 推送通知,我的 ID 不匹配。Exchange2007_SP1
和更高版本具有相互兼容的 EwsIds,因此这包括 Office365。
将-
字符替换为/
,将_
字符替换为+
,可以正确调用 Office365 API 资源。
最后,当调用get calendars时,API 实际上返回了Common Views
文件夹下的Message
项目类型。因此,当尝试将这些 ID 用于订阅时,EWS API 会抱怨我已向其发送了 ItemID 而不是 Folder ID。
谢天谢地我发现,通过GET /calendars/ews_folder_id
向 REST API 发出请求实际上是有效的,一旦您将 ID 正确转换为 URI 安全类型(请参见上面的转换)。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(82条)