将从 Office 365 REST API 返回的日历 ID 映射到 EWS API 返回的日历 ID



我正在尝试找到一种方法来映射/转换从Office 365 REST API(获取/日历)返回的Id到从EWS返回的Id(列出DistinctedFolderId="calendar"上的文件夹),反之亦然。

我注意到,对于同一日历,从Office 365 API返回的ID与从EWS API返回的ID不同。

Office 365 API - 
"AAMkADRlYTIyZTNiLWQ1ZjQtNGQwOS1hOGYzLTFjY2NkYzM4MzA2NwBGAAAAAAAhWNzR1hCyToyWVDoyJaPGBwAPTshXMc1wTqPkmdHO8phYAAAAAAEGAAAPTshXMc1wTqPkmdHO8phYAAB-AHbjAAA="
EWS API - 
"AAMkADRlYTIyZTNiLWQ1ZjQtNGQwOS1hOGYzLTFjY2NkYzM4MzA2NwAuAAAAAAAhWNzR1hCyToyWVDoyJaPGAQAPTshXMc1wTqPkmdHO8phYAAB/AHL6AAA="

我无法找到将两者联系起来的方法。我想在这些之间有一个清晰的映射/转换。

编辑 1:事实证明,在 EWS 上使用时从 Office 365 REST API 返回的 Id(将"-"替换为"/"并将"_"替换为"+")对应于某个"通用视图"文件夹下的"消息"类型的项目。这看起来是一个奇怪的设计。上述更换是否足够?还是还有其他字符应该替换?

附言:

  1. 我已经提到了http://stackoverflow.com/questions/30082306/mapping-office365-rest-calendar-ids-to-ews-calendaritem-ids,但它在我的情况下不起作用(因为 Id 的长度不同)。
  2. 我已经在转换ID操作上看到了这个文档。但是我无法理解在这种情况下如何应用它。因为我使用的 ID 是"请求服务器版本版本="Exchange2010",这也应该是 Office 365 API 的版本。

我找到了一种方法来映射/关联从Office 365 REST和EWS API返回的日历的ID。

将 EWS GET 文件夹 API 与 DistinctedFolderId="calendar" 结合使用,获取日历的文件夹 ID。 调用 EWS 列表文件夹 API 以获取 Exchange 上的所有其他日历。

现在,将这些 ID 映射到从 Office 365 返回的 ID: 对于上面返回的每个日历,请调用 Office 365 REST API(/calendar/{id})。 此 API 从 Office 365 返回具有新 ID 的相应日历(即相同的 Office 365 标识符)。有趣的是,此 ID 对应于 EWS 上"公共视图"文件夹下的消息项。

虽然,它通过试用工作,但我找不到任何 MS 文档来解释这一点。

有人对这种行为有任何想法吗?

最新更新