我希望访问几个Microsoft Outlook用户的免费/繁忙信息(在同一租户上),以便我可以为他们安排一些事件。
为此,我有几种可能性:
- FindMeetingTimes
- ListEvents
- getschedule
我的问题是所有这些都需要Calendars.Read
或Calendars.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