使用 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,而是返回属于某个名为“公共(public) View ”的文件夹的项目 ID。
我不确定为什么要这样设计,但 base64 编码 ID 的差异似乎非常小。我只是仍然找不到将两者关联起来的好方法。
最佳答案
事实证明,由于通过 Exchange2007
订阅 EWS 推送通知,我的 ID 不匹配。版本。 Exchange2007_SP1
以及其他具有彼此兼容的 EwsId,因此这包括 Office365。
替换 -
带有 /
的字符和_
带有 +
的字符允许我正确调用 Office365 API 资源。
最后,当调用get calendars时,API 实际上返回 Message
Common Views
下的项目类型文件夹。因此,当尝试使用这些 ID 进行订阅时,EWS API 会提示我向其发送了 ItemID,而不是文件夹 ID。
谢天谢地我发现通过 GET /calendars/ews_folder_id
向 REST API 发出请求一旦你正确地将 ID 转换为 URI 安全类型(参见上面的转换),实际上就可以工作了。
关于office365 - 将 Office365 REST 日历 ID 映射到 EWS 日历项目 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082306/