我有一个 Web 应用程序,可用作 Microsoft Teams 的记事本。本质上,我需要使用此应用程序的 Calls.AccessMedia.All 范围来访问 Microsoft Teams 录音。问题是,如果没有管理员批准请求,用户就无法同意此范围。
有人遇到过这样的问题吗?如果有,你是如何解决的?当需要用户无法同意的高权限范围时,对于这种情况,是否有一些最佳实践的逻辑?感谢您的帮助。
使用此应用程序的
范围来访问 Microsoft Teams 录制内容。问题是,如果没有管理员批准请求,用户就无法同意此范围。Calls.AccessMedia.All
正如本MSDocument中提到的, 不幸的是,未经管理员同意,无法访问
Calls.AccessMedia.All
应用程序类型API权限,因为它是高权限的Microsoft Graph API范围。
注意:
用户同意:用户只能同意其帐户的低权限范围。
管理员同意:需要管理员同意才能为整个组织或特定用户授予高权限范围的同意。
要读取 Microsoft Teams 录制内容,您需要拥有
OnlineMeetings.Read.All
API 权限,该权限允许应用程序读取在线会议的属性和关系,包括在授予管理员同意的情况下录制信息。
同时
Calls.AccessMedia.All
允许应用程序在通话中直接访问媒体流,如果您需要访问此API,则需要授予管理员同意,因为它是高权限范围。
我注册了 Microsoft Entra ID 应用程序并授予管理员同意,如下所示:
使用以下参数生成访问令牌:
POST https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token
client_id = <client_id>
client_secret= <client secret>
grant_type = client_credentials
scope = https://graph.microsoft.com/.default
解码 http://jwt.ms 上的访问令牌并确保
OnlineMeetings.Read.All
应存在。
获取会议录音:
GET https://graph.microsoft.com/v1.0/users/<user-id>/onlineMeetings/<meeting-id>/recordings
GET https://graph.microsoft.com/v1.0/users/<user-id>/onlineMeetings/<meeting-id>/recordings/<recording-id>
参考资料: