为何Microsoft Graph API用户接口可展开manager,组成员接口不行?
问题原因与解决方案
为什么两个请求表现不同?
/users端点返回的是microsoft.graph.user类型资源,该类型原生包含manager属性,因此可以直接通过$expand=manager拉取关联的经理数据。/groups/{groupid}/members默认返回的是microsoft.graph.directoryObject类型,这是用户、组、设备等所有目录对象的父类型,它本身并不包含manager属性,所以无法直接通过$expand获取经理信息。
可行的解决方案
方案1:将组成员强制转换为User类型后展开经理
直接在请求路径中限定成员资源为User类型,返回结果就会是user对象,此时即可正常使用$expand=manager:
GET https://graph.microsoft.com/v1.0/groups/{groupid}/members/microsoft.graph.user?$expand=manager
这个方式会自动过滤组内非用户的成员(如其他组、设备),只返回用户及其经理信息。
方案2:从User端点出发,筛选组内用户并展开经理
从用户接口入手,使用OData的any运算符过滤出属于目标组的用户,同时展开经理数据:
GET https://graph.microsoft.com/v1.0/users?$filter=memberOf/any(g:g/id eq '{groupid}')&$expand=manager
该请求会直接返回所有属于指定组的用户及其经理信息,无需为每个用户单独发起请求。
以上两个方案在v1.0版本即可正常使用,无需依赖beta版本。
内容的提问来源于stack exchange,提问作者Sayroyten
相关产品推荐
相关产品推荐

