调用 Graph API 创建 Teams 联机会议时返回 MethodNotAllowed
错误原因
POST是创建Teams在线会议的正确HTTP方法,返回MethodNotAllowed的核心原因通常有两个:
- 授权上下文与路径不匹配:
/me是委托授权场景专用的路径别名,依赖登录用户的身份上下文。如果使用客户端凭据流(应用级令牌、无交互登录用户)调用,服务无法解析/me对应的用户资源,路由匹配失败时会返回405,而非常规的401/403权限错误。 - API版本适配问题:请求体中的
isBroadcast、broadcastSettings字段在报错发生的2021年时点仅在Graph beta测试版中提供,v1.0正式版暂未支持该属性,异常参数也可能触发该报错(该属性后续已并入v1.0正式版本)。
调整方案
修正请求路径
HTTP方法保持POST不变,根据授权类型选择对应端点:
- 用户登录的委托授权场景(代表当前用户创建会议):保留原路径
https://graph.microsoft.com/v1.0/me/onlineMeetings - 无用户的应用身份场景(服务端自动创建会议):替换为指定组织者的路径
https://graph.microsoft.com/v1.0/users/{会议组织者的Azure AD对象ID}/onlineMeetings
配置对应权限
在Azure AD应用注册中添加Microsoft Graph权限:
- 委托授权场景:添加委托类型权限
OnlineMeetings.ReadWrite(仅操作当前用户的会议);如需操作所有用户的会议,添加OnlineMeetings.ReadWrite.All,该权限需管理员同意 - 应用身份场景:添加应用类型权限
OnlineMeetings.ReadWrite.All,必须由租户管理员授予同意
按场景调整请求体
普通Teams会议
直接删除广播相关字段即可,修正后请求体示例:
{ "startDateTime": "2019-07-12T14:30:34.2444915-07:00", "endDateTime": "2019-07-12T15:00:34.2464912-07:00", "subject": "User Token Meeting" }
Teams广播(直播)会议
2021年时点需切换到beta版本端点,再根据授权场景选择路径:
- 委托场景:
https://graph.microsoft.com/beta/me/onlineMeetings - 应用场景:
https://graph.microsoft.com/beta/users/{会议组织者对象ID}/onlineMeetings
原有广播配置字段可保留,同时需提前确认租户已开启Teams直播功能、调用账号有创建直播的权限。
内容的提问来源于stack exchange,提问作者Ramesh
相关产品推荐
相关产品推荐

