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

ASP.NET Core Web Api调用Graph API未返回全部用户数据如何解决?

问题原因及解决方案

1. 权限配置不足

你当前注册的Graph委托权限User.ReadBasic.All仅允许读取用户基础公开信息(仅包含DisplayName、主体名称、邮箱、头像等默认字段),City、Country、BusinessPhones属于用户扩展属性,需要额外申请User.Read.All委托权限,且该权限需要租户管理员完成全局同意后才会生效。
你在Graph Explorer中能正常获取全量字段,是因为你登录Graph Explorer的账号已经被授予了更高权限,或者你在Graph Explorer的权限面板中单独同意过User.Read.All权限。
修正权限配置:

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(builder.Configuration)
    .EnableTokenAcquisitionToCallDownstreamApi()
    // 新增User.Read.All权限
    .AddMicrosoftGraph("https://graph.microsoft.com/beta", "user.read user.readbasic.all user.read.all profile")
    .AddInMemoryTokenCaches();

2. 调用代码存在语法错误

你现有代码中在Select之后重复调用了Request()方法,会清空之前已经配置的Filter、Select等查询参数,实际发往Graph API的请求没有携带$select参数,默认仅返回基础字段,因此扩展字段全部为null。
修正后的调用代码:

var userResult = await _graphServiceClient.Users
    .Request()
    .Filter($"mail eq 'someuser@myorg.com'")
    .Select(user => new {
        user.DisplayName,
        user.City,
        user.Country,
        user.BusinessPhones
    })
    .GetAsync();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:48:02