4

我希望访问多个 Microsoft Outlook 用户(在同一租户上)的忙/闲信息,以便为他们安排一些活动。

为此,我有几种可能性:

我的问题是所有这些都需要Calendars.ReadCalendars.Read.Shared权限。我已经测试了解决方案 2(因为我更喜欢应用程序权限),但是在列出事件时,我会收到这些事件的所有信息,并且可能还会看到附件,这是一个太宽泛的权限。

因此,我的问题如下:如何在多个用户之间找到空闲时间,然后向他们发送 Microsoft Outlook 日历邀请,而无需授予过宽的权限?

附加问题:我目前正在测试使用 Calendars.Read.Shared 获取共享事件。我的第一个用户通过了 OAuth 流程并授予了我的应用程序的权限。另一个用户与该用户共享他们的日历(仅限可用性)。但是,当尝试获取事件时(端点:https://graph.microsoft.com/v1.0/users/{user_B_Graph_ID}/events我收到“403 - DelegatedCalendarAccessDenied”错误。有人遇到过这种情况吗?

这是我正在尝试做的文档文件。

4

2 回答 2

1

应用程序权限范围在设计上非常广泛,它确实是一个“全有或全无”的场景。如果您使用Calendar.ReadApplication 范围,那么您的应用程序将对租户中的每个日历具有只读访问权限。无法限制它可以访问哪些日历或哪些数据。

/findMeetingTimes端点不支持应用程序范围(它使用委托Calendars.Read.Shared范围),它可能最接近您要查找的内容。

/findMeetingTimes工作流程使用起来有点麻烦,/getSchedule但由于/getSchedule仍处于测试阶段,因此您不应该在生产应用程序中使用它。/beta拉取对任何API的依赖是不安全的,它们可以而且很可能会不时地失败。

于 2019-03-14T18:28:11.810 回答
0

对于将来遇到相同问题的任何人。您可以通过配置应用程序访问策略来缩小 Calendar.Read 权限范围:

管理员可以配置应用程序访问策略以限制应用程序访问特定邮箱而不是组织中的所有邮箱,即使应用程序已被授予 Calendars.Read 或 Calendars.ReadWrite 的应用程序权限。

https://docs.microsoft.com/en-us/graph/permissions-reference#calendars-permissions

于 2021-12-14T15:53:35.233 回答