如何获取GetParticipant API所需的meetingID、tenantID及participantID
Microsoft Teams GetParticipant API调用问题解决方案
报错直接原因
你当前收到404不存在的报错首先有两个显性问题:
- 接口路径拼写错误:你代码中拼接的路径使用了
partials字段,官方正确路径字段为participants - 直接使用上下文获取的原始
meetingId调用接口,未做格式转换
三个入参的正确获取与处理规则
- tenantID:从
context.tid字段直接获取的参数有效,无需额外处理,仅需要确保请求接口所用的Bearer令牌所属租户与该ID一致即可 - participantID:如果查询当前用户的参会信息,从
context.userObjectId直接获取的参数有效;如果查询其他参会者信息,需要先调用会议参会者列表接口获取对应目标用户的AAD对象ID作为入参 - meetingID:上下文直接获取的
context.meetingId为原始ID,调用Graph API前需要按如下规则转换:- 给原始ID添加前缀
0#0# - 对拼接后的字符串做Base64编码
- 对编码结果做URL安全处理:将
+替换为-、/替换为_、删除末尾所有的=符号
- 给原始ID添加前缀
修正后代码示例
microsoftTeams.getContext(function (context) { // 处理符合要求的meetingId const rawMeetingId = context.meetingId; const processedMeetingId = Buffer.from(`0#0#${rawMeetingId}`) .toString('base64') .replace(/\+/g, '-') .replace(/\//g, '_') .replace(/=+$/, ''); const participantID = context.userObjectId; // 拼接正确的请求路径 const apiPath = `/v1.0/meetings/${processedMeetingId}/participants/${participantID}`; // 后续携带有效权限的Bearer令牌发起请求即可 })
其他注意事项
- 调用该接口需要提前申请对应的Graph API权限,应用权限可选
OnlineMeetings.Read.All、OnlineMeetings.ReadWrite.All,委托权限可选OnlineMeetings.Read、OnlineMeetings.ReadWrite - 若调用后仍报权限类错误,需要检查令牌的权限范围是否包含上述申请的权限
内容的提问来源于stack exchange,提问作者stkhr
相关产品推荐
相关产品推荐

