0

我对 Microsoft Graph Rest API 有疑问。我写了一个程序,应该从 Outlook 中读取联系人,然后一次又一次地匹配它们。为此,我使用联系人记录中的 ID。我的程序读取所有文件夹并获取有关所有联系人的必要信息。到目前为止,这工作得很好。

现在我出人意料地遇到了一个问题,因为 Outlook 中的联系人 ID 可以更改,因此我失去了对外部数据集的引用。

以下情况给我带来了问题。

  1. 我在 Outlook 中创建了一个联系人。此联系人在通过 Rest API 读出后有一个 ID。

{'@odata.etag': 'W/"EQAAABYAAADqyc40Bfr0RZDGyWTzcCdWAADu40Xu"', 'id': 'AAMkADE4MWMwOTY4LTM2ODAtNDAyZS1iZDgwLWEyYjE3NTUxY2U4OABGAAAAAACYta-jK-baT5Lfw8NopJJYBwDqyc40Bfr0RZDGyWTzcCdWAADCW0U2AADqyc40Bfr0RZDGyWTzcCdWAADvCEp-AAA=', 'displayName': 'Max Mustermann'}

  1. 我使用联系人的“移动到”选项将其移动到另一个文件夹。之后,此联系人具有不同的 ID。

{'@odata.etag': 'W/"EQAAABYAAADqyc40Bfr0RZDGyWTzcCdWAADu40YP"', 'id': 'AAMkADE4MWMwOTY4LTM2ODAtNDAyZS1iZDgwLWEyYjE3NTUxY2U4OABGAAAAAACYta-jK-baT5Lfw8NopJJYBwDqyc40Bfr0RZDGyWTzcCdWAADvCHYwAADqyc40Bfr0RZDGyWTzcCdWAADvCLTCAAA=', 'displayName': 'Max Mustermann'}

谁能给我一个关于如何防止这种情况的提示?...或者有没有办法读取联系人的旧 ID?

如果我将联系人移动到文件夹,也许有人可以解释我,为什么 ID 会发生变化。

欢迎任何帮助。

4

1 回答 1

0

原因在这里描述:

Outlook 项目(消息、事件、联系人、任务)有一个有趣的行为,您可能从未注意到或让您感到非常沮丧:它们的 ID 发生了变化。这种情况不会经常发生,只有在项目被移动时才会发生,但它可能会给那些离线存储 ID 以供以后使用的应用程序带来真正的问题。不可变标识符使您的应用程序能够获取在项目的生命周期内不会更改的 ID。

https://docs.microsoft.com/en-us/graph/outlook-immutable-id

还有解决方案:

不可变 ID 是 Microsoft Graph 的一项可选功能。要选择加入,您的应用程序需要在 API 请求中发送额外的 HTTP 标头:

首选:IdType="ImmutableId"

此标头仅适用于包含它的请求。如果您想始终使用不可变 ID,则必须在每个 API 请求中包含此标头。

https://docs.microsoft.com/en-us/graph/outlook-immutable-id#how-it-works

于 2021-05-10T10:33:47.167 回答