如何通过Microsoft Graph API仅用用户ID移除Teams用户或获取成员ID
解决方案:无需存储Membership ID移除Teams成员
你完全不需要依赖数据库存储membership ID,有两种高效的方式可以实现需求,其中一种甚至能直接通过用户ID完成移除操作:
方法一:利用Office 365 Group API直接移除(最简便)
Teams团队本质上是一个Office 365 Group,所以你可以直接调用Group的成员移除接口,无需获取membership ID,只需要团队ID和用户ID即可:
DELETE /groups/{team-id}/members/{user-id}/$ref
这个接口会直接将用户从团队(对应的Group)中移除,权限要求和Teams成员移除接口一致(比如TeamMember.ReadWrite.All或GroupMember.ReadWrite.All)。
方法二:先查询Membership ID再删除(针对Teams专属场景)
如果你更倾向于使用Teams专属的API,可以先通过用户ID查询对应的membership ID,再执行删除:
- 查询获取membership ID:使用
$filter参数精准筛选目标用户的成员记录:
GET /teams/{team-id}/members?$filter=user/id eq '{user-id}'
响应结果里的id字段就是你需要的membership ID。
2. 执行删除操作:用获取到的membership ID调用Teams删除接口:
DELETE /teams/{team-id}/members/{membership-id}
进阶优化:批量请求合并查询与删除
如果想减少API调用次数,可以使用Microsoft Graph的批量请求,将查询和删除操作合并为一个请求:
{ "requests": [ { "id": "1", "method": "GET", "url": "/teams/{team-id}/members?$filter=user/id eq '{user-id}'" }, { "id": "2", "method": "DELETE", "url": "/teams/{team-id}/members/{$1.value[0].id}" } ] }
这个批量请求会先执行查询获取membership ID,再自动引用该ID完成删除操作,全程只需一次HTTP调用。
注意:确保你的应用已获得足够的权限(如TeamMember.ReadWrite.All),并且用户ID和团队ID的格式正确(通常是GUID)。
内容的提问来源于stack exchange,提问作者omar




