我目前正在研究Microsoft日历图形API,在尝试同步事件时遇到了一些问题。
基本上我在我的网络服务上有 2 个用户:他们都有一个 Outlook 地址。用户 A 在我的 Web 服务上创建一个活动,并将用户 B 添加为与会者。然后,使用 REST API 将事件发送到 Outlook。它是在用户 A Outlook 日历上创建的,用户 B 在 Outlook 上收到邀请,并且该事件也在他的 Outlook 日历中创建。
现在,在我的 Web 服务上,创建事件时,我检索事件的Microsoft ID 并将其存储在数据库中。这样,当我想在Outlook日历和日历之间同步事件时,我要做的就是检索所有Outlook事件,检查它们的ID,并查看它们是否存储在我的数据库中:如果是,则该事件已存在于我的Web服务中,如果它们不存在,那么我在我的Web服务中创建事件。
我遇到的问题是,当我尝试从用户 B 获取 Outlook 事件时,事件的 ID 与我之前存储的 ID 不同,因此它会创建一个我不需要的副本。
基本上,用户 A Outlook 日历和用户 B Outlook 日历上的事件具有不同的 ID。我不明白这有什么意义,因为它们是相同的,用户B outlook日历上的那个只是对用户A outlook日历的邀请。
我的问题是:有什么办法可以解决这个问题吗?是否有任何类型的 ID 通过 Outlook/Office365 中的用户共享?多谢!
这正是iCalUId
属性的用途。id
在设计上是不同的,因为它是用户邮箱数据库的一种"主键"。iCalUId
在日历中应该是相同的。
从 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/event:
iCalUId
- 字符串 - 由不同日历中的事件的所有实例共享的唯一标识符。
AFAIK 没有唯一且在不同邮箱中保持不变的属性。您可以向事件添加自定义属性,并确保属性值是唯一且恒定的。这将要求您能够写入用户 A 的事件。