如何将 EWS 更改密钥转换为图形更改密钥?

How do I convert an EWS change key to a Graph change key?

我想将 EWS 管理的 API 更改键转换为图形 API returns 相同日历事件的更改键。

EWS 更改密钥(通过 this API 获得)是

<t:ItemId ChangeKey="DwAAABYAAAB19EH4lfKlQYvApCHA0Dr0AABILgj3"/>

但图表更改密钥(通过 this one 获得)有很大不同:

"changeKey": "dfRB+JXypUGLwKQhwNA69AAASC4I9w=="

关于 Graph 日历事件的 document 表示它们的用途相同,但它没有提到如何在两者之间转换,也没有提到为什么格式如此不同。

如何在这两者之间进行转换?我不能使用任何 C# 或 powershell 库,并且我想尽可能避免发送额外的 APIs。

您可以使用 translateExchangeIds API。

POST https://graph.microsoft.com/v1.0/users/{userId}/translateExchangeIds

{
  "InputIds": ["DwAAABYAAAB19EH4lfKlQYvApCHA0Dr0AABILgj3"],
  "TargetIdType": "restId",
  "SourceIdType": "ewsId"
}

响应将具有以下形状:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.convertIdResult)",
    "value": [
        {
            "sourceId": "AAMkADEzOTExYjJkLTYxZDAAb18KkFAAA=",
            "targetId": "AAMkADEzOTExoeGgGqm4QrAAb18KkFAAA="
        }
    ]
}

潜在的 TargetIdTypeSourceIdType 值是:

 <EnumType Name="exchangeIdFormat">
    <Member Name="entryId" Value="0" />
    <Member Name="ewsId" Value="1" />
    <Member Name="immutableEntryId" Value="2" />
    <Member Name="restId" Value="3" />
    <Member Name="restImmutableEntryId" Value="4" />
  </EnumType>

这将在 client libraries 的下一次更新中提供。

更新

获得转换后的项目标识符后,您可以请求该项目和 select 更改密钥 属性。分批执行此操作很有意义。

GET https://graph.microsoft.com/v1.0/users/{userId}/messages/{messageid}/?$select=changekey