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

时间:2017-06-16 09:43:52

标签: web-services outlook office365 microsoft-graph outlook-calendar

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

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

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

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

基本上,用户A展望日历和用户B展望日历上的活动具有不同的ID。我不明白这是什么意思,因为它们是相同的,用户B展望日历上的那个只是对来自用户A展望日历的邀请。

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

2 个答案:

答案 0 :(得分:4)

这正是iCalUId属性的用途。 id在设计上有所不同,因为它是用户邮箱数据库的一种“主键”。 <{1}}在日历中应该是相同的。

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

  

iCalUId - 字符串 - 跨不同日历的所有事件实例共享的唯一标识符。

答案 1 :(得分:-1)

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