获取免费/忙碌的信息,无需授权完整的阅读权限



我希望访问几个Microsoft Outlook用户的免费/繁忙信息(在同一租户上),以便我可以为他们安排一些事件。

为此,我有几种可能性:

  • FindMeetingTimes
  • ListEvents
  • getschedule

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

因此,我的问题如下:我如何找到几个用户之间的空闲时间,然后向他们发送Microsoft Outlook Calendar邀请,而无需批准过度范围的权限?

其他问题:我当前正在使用calendars.read.shared测试获取共享事件。我的第一个用户经过了OAuth流程,并允许我的应用程序。另一个用户与此用户共享其日历(仅适用)。但是,当尝试获取事件时(端点:https://graph.microsoft.com/v1.0/users/{user_B_Graph_ID}/events,我会收到`403 -depegatedCalendaraccessdenied"错误。有人经历过?

这是我想做的文档文件。

应用程序许可范围非常广泛,设计确实是"全或全无"的场景。如果您使用Calendar.Read应用程序范围,则您的应用程序将仅阅读租户中的每个日历。不可能限制哪些日历或可以访问的数据。

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

/findMeetingTimes工作流比/getSchedule更为麻烦,但是由于/getSchedule仍在beta中,因此您不应在生产应用程序中使用它。对任何/beta API的依赖性不安全,它们很可能会不时失败。

对于将来遇到相同问题的任何人。您可以通过配置应用程序访问策略来划分日历。

阅读权限

管理员可以配置应用程序访问策略以限制应用程序访问特定的邮箱,而不访问所有邮箱组织,即使已授予该应用程序日历的权限

https://learn.microsoft.com/en-us/graph/permissions-reference-vacalendars-permissions

最新更新