如何无需全局管理员或用户本人调用MS Graph的指定installedApps接口
解决方案及替代思路
首先明确:目前没有无需用户本人或全局管理员权限,就能获取组织内任意用户Teams已安装应用列表的官方途径,但可以通过以下相对安全的方式实现需求:
1. 低权限管理员角色+应用权限组合
使用TeamworkAppInstallation.Read.All应用权限,同时给公共工作账户分配Teams Administrator或Global Reader角色——这两类角色权限远低于全局管理员,仅聚焦于Teams相关管理或只读全局数据,能有效降低安全风险。
- 配置后,公共账户可通过
/users/{user-id}/teamwork/installedApps接口读取任意用户的已安装应用列表。
2. 用户委托权限+组织范围部署
如果业务允许用户授权,可让第三方应用请求TeamworkAppInstallation.Read委托权限,通过组织范围的应用部署批量获取所有用户的授权(无需用户手动操作)。
- 授权完成后,应用可读取已授权用户的Teams已安装应用列表,全程无需管理员级权限介入。
3. 批量请求优化效率
若采用用户授权方案,可结合Microsoft Graph的批量请求功能,一次性提交多个用户的installedApps查询,减少接口调用次数,提升处理效率。
关于权限差异的补充说明
你遇到的sendActivityNotification接口正常但installedApps失败的情况,是因为两个接口的权限模型不同:
sendActivityNotification仅需要TeamworkNotification.Send应用权限,该权限不涉及用户隐私数据,因此委托资源配置后即可正常调用;installedApps涉及用户的应用使用隐私,微软对其读取权限做了严格限制,仅用户本人或具备对应管理权限的账户可访问,普通委托资源配置无法突破这一限制。
内容的提问来源于stack exchange,提问作者AbyssWalker
相关产品推荐
相关产品推荐

