使用Exchange push notifications我一直在创建一项同步来自Office365用户的日历数据的服务。我一直在使用Office365 Calendar REST API(获取和管理日历)和EWS API(订阅日历更改)的组合。
我注意到最近MS已经为他们的订阅端点引入了预览API。但是,此API仍处于预览模式,我希望暂时不使用它。
一旦我完成了所有设置,问题是我无法在推送通知上返回的calendar event resource (REST)和EWS CalendarItem resource之间建立关联。 CalendarItem的ItemId
和REST事件的Id
不同。
当尝试更新我从REST API中保存的事件时,这证明是有问题的,因为我找不到将两者关联起来的好方法。
非常感谢任何帮助!
修改
在进一步挖掘之后,我实际上发现从REST API(GET /calendars
)返回的日历似乎是EWS层次结构中的Message
个项目。因此,不是此端点返回实际的文件夹ID,而是返回属于名为“公共视图”的某个文件夹中的项ID。
我不确定为什么事情是这样设计的,但base64编码ID的差异似乎非常小。我仍然无法弄清楚将两者联系起来的好方法。
答案 0 :(得分:7)
因此,由于通过Exchange2007
版本订阅了EWS推送通知,我的ID不匹配。 Exchange2007_SP1
及更高版本之间具有兼容的EwsIds,因此这包括Office365。
使用-
替换/
和_
字符的+
字符,可以让我正确调用Office365 API资源。
最后,在调用get calendars时,API实际上会返回Message
文件夹下的Common Views
项类型。因此,当尝试将这些ID用于订阅时,EWS API会抱怨我已经发送了ItemID而不是文件夹ID。
谢天谢地我发现,在您将ID正确转换为URI安全类型后,通过GET /calendars/ews_folder_id
向REST API发出请求实际上有效(请参阅上面的转换)。