如何在自有应用中调用Graph API创建Teams在线会议并获取joinWebUrl
方案评估结论
你目前的方案整体逻辑通顺,但存在重复操作和几个遗漏点,调整后即可满足所有用户创建会议、无微软账号用户正常参会的需求,具体说明如下:
一、不必要的重复操作
你给应用访问策略同时做了单用户授权和全局授权,二者只需要留一个即可:
- 如果你只需要固定用同一个租户账号创建所有会议,不需要开全局权限,删掉
Grant-CsApplicationAccessPolicy -PolicyName online-policy -Global这行命令即可,全局权限范围过大存在安全风险 - 如果你需要支持租户内多个不同用户身份创建会议,不需要单独给
myObjectID授权,全局授权已经覆盖租户内所有用户,删掉单用户授权那行命令即可
二、遗漏的必要配置
- 接口版本调整
你当前调用的是beta版本Graph接口,该版本属于测试版、接口规则随时可能变动,不建议生产环境使用,直接换成v1.0正式版即可,OnlineMeetings.ReadWrite.All应用权限在v1.0已经完全支持,调整后接口地址为:
POST https://graph.microsoft.com/v1.0/users/{用户ObjectID}/onlineMeetings
- 令牌请求参数校验
你只给出了令牌请求地址,需要确认请求参数完整,应用权限模式下必须携带以下参数才能拿到有效令牌:
grant_type固定为client_credentialsclient_id为你注册的AAD应用IDclient_secret为AAD应用生成的客户端密钥scope固定为https://graph.microsoft.com/.default
创建会议的账号许可校验
你现在固定用myObjectID对应的账号创建会议,该账号必须是你的租户内持有有效Teams许可的正式账号,否则会触发接口报错。如果你的业务需要让自有应用用户绑定自己的微软账号创建会议,需要把接口路径里的myObjectID替换为对应用户在你租户内的AAD ObjectID。无微软账号参会者的权限配置
要让没有微软账号的参会者可以正常加入会议,需要在Teams管理中心的「会议-会议策略」中,找到用于创建会议的账号所属的会议策略,开启允许匿名用户加入会议选项,否则无账号用户点击joinWebUrl会被拦截无法入会。
三、最终生效确认条件
只要满足以下条件,你的所有自有应用用户都可以正常创建会议,所有参会者不管有没有微软账号都可以正常入会:
- AAD应用的
OnlineMeetings.ReadWrite.All应用权限已经完成租户管理员同意 - 令牌请求参数正确,可拿到有效应用权限令牌
- 应用访问策略的权限范围符合你的业务需求,无重复授权
- 用于创建会议的微软账号持有有效Teams许可
- 已开启匿名用户参会权限
内容的提问来源于stack exchange,提问作者techgirl
相关产品推荐
相关产品推荐

