You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Graph API中用户与人员关联及身份区分技术问询

解决方案:用Microsoft Graph API区分真实人员、会议室与群组

我之前也碰到过类似的需求,不用纠结People端点的限制,直接通过users端点结合筛选就能搞定,下面是具体的思路和方法:

一、获取组织内所有真实人员

People端点的/me/people本质是当前用户的联系人聚合,没法直接拿到整个组织的所有人员。反而/v1.0/users端点更适合做目录级别的查询,结合筛选条件就能精准定位真实人员:

  • 真实人员通常是组织内的成员或外部访客,所以可以用userType筛选,再加上accountEnabled确保账户是激活状态:
    GET https://graph.microsoft.com/v1.0/users?$filter=userType eq 'Member' and accountEnabled eq true&$select=id,displayName,userPrincipalName,givenName,surname
    
  • 如果你需要排除外部访客,把userType eq 'Member'单独保留就行;如果要包含访客,改成userType in ('Member', 'Guest')。

二、区分会议室(资源账户)

会议室属于资源账户,它们在用户列表里,但有独特的标识:

  • 这类账户的resourceProvisioningOptions属性会包含'Room'(会议室)或'Equipment'(设备),可以用这个来筛选:
    GET https://graph.microsoft.com/v1.0/users?$filter=resourceProvisioningOptions/any(x:x eq 'Room')&$select=id,displayName,userPrincipalName
    
  • 另外,会议室的displayName通常会带有“会议室”“Room”这类关键词,但靠名称判断不如用resourceProvisioningOptions可靠。

三、区分群组

要注意:群组和用户是Graph API里的两种不同对象类型,users端点不会返回群组数据。如果要区分用户和群组,需要单独调用groups端点获取群组列表:

GET https://graph.microsoft.com/v1.0/groups?$select=id,displayName,mailNickname

之后你可以通过对象类型(用户有userPrincipalName,群组有mailNickname等属性)来区分两者。

总结

不用依赖People端点,通过users和groups端点的组合查询,再结合属性筛选,就能完美区分真实人员、会议室和群组。这种方法比People端点更直接,也更符合目录数据的查询逻辑。

内容的提问来源于stack exchange,提问作者shtrule

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:19:51