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

如何通过Microsoft Graph从Azure AD B2C获取用户登录用户名?

如何通过Microsoft Graph从Azure AD B2C获取用户登录用户名?

我完全懂你现在的困扰——明明在Azure AD B2C门户里能清楚看到用户的登录用户名(就是他们注册时用的邮箱),但用Microsoft Graph拉取用户数据时,不仅找不到直接的Username属性,连identities列表都返回null,这确实有点挠头。

咱们一步步来解决这个问题:

首先,先排除权限问题

你已经配置了User.Read.All的应用权限,这个权限是完全足够的,不需要额外添加其他权限,问题不在这。

核心原因:默认请求不会返回identities属性

Microsoft Graph的默认用户查询只会返回一组基础属性(比如id、displayName),而identities属于需要显式请求的扩展属性,如果你不指定要返回它,API就不会把这个字段包含在响应里,所以你拿到的user.Identities自然是null。

解决方案:用$select参数显式请求identities

你只需要在Graph请求中添加$select查询参数,指定要返回identities字段,同时可以保留你需要的其他基础属性。

下面是修改后的代码示例,直接替换你原来的请求逻辑就行:

// 构造查询参数,指定要返回的字段
var selectOptions = new List<QueryOption>
{
    new QueryOption("$select", "id,displayName,identities")
};

// 发起请求时带上查询参数
var users = await _graphHelperBl.ApplicationClient.Users
    .GetAsync(requestConfig =>
    {
        requestConfig.QueryOptions.AddRange(selectOptions);
    });

if (users?.Value != null)
{
    foreach (var user in users.Value)
    {
        Console.WriteLine(user.Id);
        Console.WriteLine(user.DisplayName);
        
        // 从identities中提取登录用户名
        if (user.Identities != null && user.Identities.Any())
        {
            // 找到登录用的身份条目:根据你的B2C配置,这里的signInType可能是"emailAddress"或"userName"
            var loginIdentity = user.Identities.FirstOrDefault(identity => 
                identity.SignInType == "emailAddress" || identity.SignInType == "userName");
            
            if (loginIdentity != null)
            {
                // issuerAssignedId就是用户的登录邮箱/用户名
                Console.WriteLine("登录用户名: " + loginIdentity.IssuerAssignedId);
            }
        }
    }
}

补充说明:怎么确定正确的signInType?

在Azure AD B2C里,用户的登录身份类型取决于你配置的用户流:

  • 如果是邮箱注册/登录的用户流,对应的signInType是emailAddress,issuerAssignedId就是用户的邮箱地址(也就是你要的登录用户名)。
  • 如果是用户名注册的用户流,signInType就是userName,issuerAssignedId是用户设置的用户名。
  • 如果用户用社交账号登录,signInType会是对应的服务商(比如facebook.com、google.com),你可以根据自己的业务场景筛选对应的条目。

这样修改之后,你就能拿到用户登录用的用户名了,和你在B2C门户里看到的完全一致。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 11:28:10