如何在客户端凭证流中使用MS Graph的findMeetingTimes端点
关于Microsoft Graph findMeetingTimes端点调用问题解答
核心问题确认
你观察的结论是正确的:findMeetingTimes 端点仅支持委派用户权限流,原生不支持客户端凭证(应用程序)权限流。
你收到资源不存在报错的直接原因是请求路径错误,即便是委派权限流,该端点的合法请求路径也不是根路径下的findMeetingTimes,而是用户上下文下的路径:
https://graph.microsoft.com/v1.0/me/findMeetingTimes # 或者指定目标用户 https://graph.microsoft.com/v1.0/users/{目标用户ID}/findMeetingTimes
即便你修正路径,在客户端凭证流下发起请求依然会返回权限不足的错误。
可用变通方案
- 替代接口方案:使用
getSchedule端点实现等效功能
该端点支持应用程序权限,你可以先在Azure AD后台为应用申请Calendars.Read或Calendars.ReadWrite的应用权限,完成管理员同意授权后,调用如下接口获取相关参会人员的忙闲状态、工作时间信息:POST https://graph.microsoft.com/v1.0/users/{查询基准用户ID}/calendar/getSchedule
拿到返回结果后,你可以自行通过业务逻辑计算匹配所有参会人的重叠可用时间,完全可以实现findMeetingTimes的核心能力。 - 服务账号模拟方案:如果必须使用
findMeetingTimes的原生计算能力,可以在组织内创建一个无MFA的专用服务账号,使用资源所有者密码凭证(ROPC)流获取该账号的委派权限令牌,再调用修正路径后的findMeetingTimes端点即可。该方案需要符合组织的安全管理规范,不建议在高安全要求场景下使用。
内容的提问来源于stack exchange,提问作者Theodor Peifer
相关产品推荐
相关产品推荐

