开发自定义Web App:无法获取SDS读写所需的Microsoft Graph权限
解决Microsoft Graph API中EduRoster权限找不到的问题
我之前也碰到过一模一样的困扰,你找不到EduRoster.Read.All和EduRoster.ReadWrite.All权限的核心原因是:这些权限属于仅限管理员同意的应用权限,且仅在特定条件下可见,下面是具体的解决步骤和细节:
1. 先明确权限的类型和可见前提
这些EduRoster权限是Microsoft Graph的应用权限(而非面向用户的委托权限),默认不会在普通用户的权限选择界面中显示,只有租户管理员才能操作和授予。同时,这些权限仅对已经配置了School Data Sync(SDS)的Azure AD租户可见,如果你的租户还没启用SDS,大概率搜不到这些权限。
2. 在Azure AD应用注册中找到并添加权限
按照以下步骤操作就能找到目标权限:
- 登录Azure门户,进入你的应用注册页面
- 左侧导航选择「API权限」,点击「添加权限」
- 选择「Microsoft Graph」,然后切换到「应用权限」标签(别选委托权限,委托权限里确实没有这些)
- 在搜索框中输入
EduRoster,就能看到EduRoster.Read.All和EduRoster.ReadWrite.All这两个权限了 - 选中你需要的权限,点击「添加权限」完成配置
3. 必须完成管理员同意才能生效
添加权限后,必须由租户全局管理员授予同意才能让应用使用这些权限:
- 在应用注册的「API权限」页面,点击「授予管理员同意」按钮即可完成授权(仅限单租户应用)
- 如果是多租户应用,你需要引导目标租户的管理员通过管理员同意流程来授权(可以生成包含权限范围的同意链接,让管理员访问并确认授权)
4. 调用API的额外注意事项
因为你参考的是Beta版本的Graph API文档,调用时必须使用Beta端点,比如获取学校列表的请求地址是:
GET https://graph.microsoft.com/beta/education/schools
确保请求使用正确的端点,否则即使权限配置正确也会出现权限不足的报错。
内容的提问来源于stack exchange,提问作者Jako Kotzé
相关产品推荐
相关产品推荐

