我刚开始使用 Microsoft Graph API 和 Azure。我想检索组织中所有 Teams 会议的出席报告,但我很难理解如何使用应用程序权限(仅应用程序身份验证)来执行此操作。
据我所知,大多数示例和文档都讨论委派权限,即用户登录的情况,但我希望为整个租户自动执行此过程。
是否可以通过申请权限获取考勤报告? 如果是,我需要在 Azure 中设置哪些 API 权限? 我应该使用哪些 Microsoft Graph API 端点或方法?
我将不胜感激任何帮助或示例,因为我仍在学习这一切是如何工作的。
使用应用程序权限检索我的组织中所有 Teams 会议的出席报告。
注册单租户 Microsoft Entra ID 应用程序,要检索会议出席报告,添加了
OnlineMeetingArtifact.Read.All
应用程序类型 API 权限和授予管理员同意,如下所示:
请参阅此 MsDoc ,确保创建和配置应用程序访问策略,并通过使用 Powershell 使用管理员帐户登录来使用 Application 类型的权限,并授予访问权限,如下所示:
Install-Module -Name MicrosoftTeams -Force -AllowClobber
Import-Module MicrosoftTeams
Connect-MicrosoftTeams
New-CsApplicationAccessPolicy -Identity Demo-policy -AppIds "<app-id>" -Description "Allow access to Teams App"
Grant-CsApplicationAccessPolicy -PolicyName Demo-policy -Global
创建应用程序访问策略后,要访问应用程序类型 API 权限,需要使用客户端凭据流程使用以下参数生成访问令牌:
GET 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
使用相同的访问令牌,要检索要检查与会者报告的在线会议数据,您必须有
meeting ID
或使用 joinWebUrl
筛选用户是组织者或与会者。
GET https://graph.microsoft.com/v1.0/users/<user-id>/onlineMeetings?$filter=joinUrl eq https://teams.microsoft.com/l/meetup-join/.....
或
GET https://graph.microsoft.com/v1.0/users/<user-id>/onlineMeetings/<meeting-id>/
要使用相同的访问令牌检索
meetingAttendanceReport
的列表,请使用以下查询:
GET https://graph.microsoft.com/v1.0/users/<user-id>/onlineMeetings/<online-meetingId>/attendanceReports
参考资料: