office365 - 将 Office365 REST 日历 ID 映射到 EWS 日历项目 ID

标签 office365 exchangewebservices ews-managed-api

使用 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/

相关文章:

api - 利用 Azure Graph API 进行 SharePoint Online 用户管理

c# - EWS 设置扩展属性问题

exchange-server - 使用 EWS 托管 API 为其他用户创建约会?

c# - EWS - ServerBusyException?

office365 - 使用 graph api 获取用户所属的所有租户

authentication - 无需注册应用程序即可通过 REST 进行 Office 365 身份验证

php - EWS nusoap php请求FindItem操作

exchange-server - 将 EWS 对话*与 Outlook 插件对话*匹配

outlook - 如何实现exchange服务器的邮件推送通知?

c# - 获取代表用户权限的列表 - EWS Manage API