将Office365 REST日历ID映射到EWS CalendarItem ID

jst*_*zik 18 exchangewebservices ews-managed-api office365

使用Exchange 推送通知我一直在创建一个同步来自Office365用户的日历数据的服务.我一直在使用Office365 Calendar REST API(用于获取和管理日历)和EWS API(用于订阅日历更改)的组合.

我注意到最近MS已经为他们的订阅端点引入了预览API.但是,此API仍处于预览模式,我希望暂时不使用它.

一旦我完成了所有设置,问题是我无法在日历事件资源(REST)和推送通知上返回的EWS CalendarItem资源之间建立关联.在ItemId为CalendarItem和Id对REST事件不同.

当尝试更新我从REST API保存的事件时,这证明是有问题的,因为我找不到将两者关联起来的好方法.

任何帮助是极大的赞赏!

编辑 在进一步挖掘之后,我实际上发现从REST API(GET /calendars)返回的日历似乎是MessageEWS层次结构中的项目.因此,不是此端点返回实际的文件夹ID,而是返回属于某个名为"公共视图"的文件夹中的项ID.

我不确定为什么事情是这样设计的,但base64编码ID的差异似乎非常小.我仍然无法弄清楚将两者联系起来的好方法.

jst*_*zik 8

因此,由于通过Exchange2007版本订阅EWS推送通知,我的ID不匹配.Exchange2007_SP1以及之外的兼容EwsIds,所以这包括Office365.

-字符/_字符替换字符+允许我正确地调用Office365 API资源.

最后,在调用日历时,API实际上返回MessageCommon Views文件夹下的项目类型.因此,当尝试将这些ID用于订阅时,EWS API会抱怨我已经发送了ItemID而不是文件夹ID.

值得庆幸的是,我发现GET /calendars/ews_folder_id在将ID正确转换为URI安全类型后,通过实际工作来向REST API发出请求(请参阅上面的转换).