如何通过Microsoft Graph API获取线上会议参会报告?遇权限报错如何解决
解决方案
报错核心原因:Graph Explorer和你的Python代码使用的授权模式不一致,导致权限校验规则不同
- 确认Python请求的授权流
Graph Explorer默认使用委托权限流(以你登录的个人账号身份发起请求),如果你的Python代码使用客户端凭证流(纯应用权限模式),即便配置了OnlineMeetings.ReadAll应用权限,调用/users/{user_id}/onlineMeetings路径的参会报告接口也会触发权限报错。该接口的应用权限仅支持查询应用自身创建的会议、或全局管理员/Teams通信管理员名下的会议,普通用户的会议无法通过应用权限直接调取。
修复方案:将Python代码的授权流切换为委托授权流(如授权码流、用户名密码流),用具备会议访问权限的用户身份获取Access Token发起请求,和Graph Explorer的运行逻辑完全对齐。 - 校验权限配置项
回到Azure AD应用注册页检查权限配置:- 若使用委托权限流:确认你添加的是
OnlineMeetings.Read或OnlineMeetings.ReadAll委托权限,且已经完成管理员同意授权 - 若必须使用应用权限流:除了
OnlineMeetings.ReadAll应用权限外,额外添加OnlineMeetingArtifact.Read.All应用权限并完成管理员授权,该权限是beta版本参会报告接口的必填隐藏权限
- 若使用委托权限流:确认你添加的是
- 校验Token权限声明
复制Python代码请求使用的Access Token,到JWT解析工具查看权限声明:委托权限流检查scp字段,应用权限流检查roles字段,确认你配置的权限确实已经被包含在Token中,避免权限配置后未刷新Token导致的缓存问题。 - 调整接口请求路径
委托权限流场景下,建议将接口路径替换为https://graph.microsoft.com/beta/me/onlineMeetings/{meeting_id}/attendanceReports,避免user_id参数传值错误导致的权限校验失败。同时确认传入的meeting_id是完整的Graph API会议ID,而非从会议入会链接截取的短ID。
内容的提问来源于stack exchange,提问作者mthu9
相关产品推荐
相关产品推荐

