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

使用Graph API查询Azure AD:获取用户所属组名称失败求助

解决Graph API获取用户所属组时无DisplayName的问题

问题原因

  1. 返回对象类型限制:TransitiveMemberOf返回的是DirectoryObject集合,这是一个基类,Group是它的派生类,直接遍历无法访问Group特有的DisplayName属性,必须做类型转换。
  2. 默认属性返回规则:Graph API默认仅返回对象的基础属性(如id),需显式指定要获取的属性,才能拿到displayName这类扩展属性。

解决方案

1. 修改请求代码,指定需获取的属性

在请求中通过Select方法明确声明要获取的属性(如displayName、id):

var groups = await graphClient.Users[user.Id].TransitiveMemberOf
    .Request()
    .Select("displayName, id")
    .GetAsync();

2. 遍历结果时转换为Group类型

遍历集合时,先判断对象是否为Group类型,再访问其专属属性:

foreach (var directoryObject in groups)
{
    if (directoryObject is Group group)
    {
        Console.WriteLine($"组名称: {group.DisplayName}, 组ID: {group.Id}");
    }
    // 如需处理其他类型(如目录角色),可添加额外判断分支
}

额外注意

确保你的应用已配置足够权限,比如Group.Read.All或Directory.Read.All,否则可能仍无法获取displayName属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:00:17