Microsoft graph api Microsoft Graph API共享日历ID在用户之间不一致

Microsoft graph api Microsoft Graph API共享日历ID在用户之间不一致,microsoft-graph-api,office365api,outlook-restapi,Microsoft Graph Api,Office365api,Outlook Restapi,我的应用程序允许用户在共享日历上安排事件,并允许其他用户可能重新安排或取消这些事件。我请求获得Calendar.ReadWrite.Shared权限以启用此功能 如果两个用户可以访问共享日历,则从GET/me/calendars返回的ID值对于两个用户来说是不同的。是否有一个一致、唯一的ID值可用于跨用户关联共享日历?不幸的是,没有一个唯一的ID值可跨所有共享日历实例共享 Exchange server中的日历构建在邮件文件夹之上(就像约会构建在邮件之上)。用户邮箱中的每个文件夹在创建时都分配了

我的应用程序允许用户在共享日历上安排事件,并允许其他用户可能重新安排或取消这些事件。我请求获得
Calendar.ReadWrite.Shared
权限以启用此功能


如果两个用户可以访问共享日历,则从
GET/me/calendars
返回的ID值对于两个用户来说是不同的。是否有一个一致、唯一的ID值可用于跨用户关联共享日历?

不幸的是,没有一个唯一的ID值可跨所有共享日历实例共享

Exchange server中的日历构建在邮件文件夹之上(就像约会构建在邮件之上)。用户邮箱中的每个文件夹在创建时都分配了一个ID

当一个用户与另一个用户(代理)共享其日历时,幕后发生的事情是,当代理单击共享邮件中的“接受”按钮时,服务器在代理邮箱中创建共享日历的副本,并设置同步,以便副本与原始日历保持同步。这对于您的问题很重要,因为当您作为代理访问共享日历时,您不是在访问所有者邮箱中的日历,而是在访问副本。因为在每个代理的邮箱中创建了一个副本,所以每个副本的ID都不同


日历资源上的
owner
属性告诉您原始日历所在的邮箱,但它不足以将其与其他邮箱中的其他副本相关联。
name
属性是可编辑的,因此在这里不能依赖它。

我使用一个帐户的日历,其中包含给其他人的特权。 因此,我可以使用从每个帐户访问此cal

/{$user}/calendar/{$cal}/
我还可以与delta同步:

/{$user}/calendarView/delta?

但这只适用于“一个”日历,目前没有“增量”用于解释日历。

Hi@Emily!我在一个类似的用例中遇到了同样的问题。你找到合适的解决办法了吗?谢谢嘿@Jason-鉴于共享日历由多个用户使用(根据定义),MSFT建议如何将这些日历识别为等效日历?是否有日历的
iCalUid
等价物?我没有。没有什么好办法。您能解释一下您的场景吗?使用放置在日历上的特殊事件,然后使用iCalUId作为日历的唯一ID怎么样?活动必须没有参与者。我知道用户可以删除它。@JasonJohnston-当然可以。它实际上与Emily的用例非常相似。我们有一个应用程序,其中多个用户正在共享日历上安排事件。有时,用户需要重新安排或取消共享日历上的事件,他们有编辑权限,但没有自己创建。因此,在创建事件后,我将获得创建者的日历ID。但我无法确定这与我们应用程序中的任何其他用户对应的日历。我能想到的最好方法是将事件的iCalUid与日历的所有者一起存储。然后,如果需要为特定用户查找,请检查邮箱中与该iCalUid事件的所有者匹配的所有日历。这不太好,涉及多个调用,但至少应该让您的场景正常工作。您可能希望在我们的UserVoice上提交功能请求: