Microsoft Calendar Graph API: 事件 ID 未在用户之间共享

Microsoft Calendar Graph API : Id of event not shared between users

我目前正在研究 Microsoft Calendar Graph API,我 运行 在尝试同步事件时遇到了一些问题。

基本上我的网络服务上有 2 个用户:他们都有一个 Outlook 地址。用户 A 在我的 Web 服务上创建一个事件,并将用户 B 添加为与会者。然后使用 REST API 将事件发送到 Outlook。它是在用户 A 的 Outlook 日历上创建的,用户 B 在 Outlook 上收到邀请,并且该事件也在他的 Outlook 日历中创建。

现在,在我的 Web 服务上,当创建事件时,我会检索该事件的 Microsoft ID 并将其存储在我的数据库中。这样,当我想在 Outlook 日历和我的日历之间同步事件时,我所做的就是检索所有 Outlook 事件,检查它们的 ID 并查看它们是否存储在我的数据库中:如果是,那么该事件已经存在于我的网站上服务,如果不是,那么我会在我的 Web 服务中创建事件。

我遇到的问题是,当我尝试从用户 B 获取 Outlook 事件时,该事件的 ID 与我之前存储的不同,因此它创建了一个我不需要的副本。

基本上,用户A outlook 日历和用户B outlook 日历上的事件具有不同的ID。我不明白这有什么意义,因为它们是相同的,用户 B outlook 日历上的那个只是用户 A outlook 日历上的邀请。

我的问题是:有什么办法可以解决这个问题吗? Outlook/Office365 中是否有通过用户共享的任何类型的 ID?非常感谢!

AFAIK 没有 属性 是唯一的,并且在不同的邮箱中也是不变的。您可以 add custom properties 事件,并确保 属性 值是唯一且恒定的。这将要求您能够写入用户 A 的事件。

这正是 iCalUId 属性 的用途。 id 在设计上有所不同,因为它是用户邮箱数据库的一种 "primary key"。 iCalUId 应该在各个日历中是相同的。

来自https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/event

iCalUId - String - A unique identifier that is shared by all instances of an event across different calendars.