使用 C# 中的 Graph API 从 Azure 目录获取所有用户

问题描述 投票:0回答:1

我尝试过,效果很好,但我只得到 100 个用户。

C#代码:

    public async Task getAllUsers()
    {
        UserCollectionResponse users = await GraphClient.Users.GetAsync();

        foreach (var item in users.Value)
        {
            Console.WriteLine("item.UserPrincipalName");
        }
        Console.WriteLine(users.Value.Count);
    }

最后一行显示的用户数

如何才能做到?

c# .net-core azure-active-directory azure-web-app-service
1个回答
0
投票

Grpah API 中的客户端分页

我希望您需要进行分页才能从 Graph API 获取所有用户详细信息。 Graph API 支持 OData 查询参数,例如 $count、$expand、$filter、$orderby、$search、$select 和 $top。重要的一点是,您需要使用 $top 而不是 $skip 来进行分页。微软文档如下

支持客户端分页,包括客户端在单个页面中可以请求的结果数量取决于 API 和正在执行的查询。例如,/users 端点支持 $top 但不支持 $skip。

这就是您需要分页以让每个请求获得 50 个用户的方式

  1. https://graph.microsoft.com/v1.0/users?$top=50
  2. #1 的回复将提供@odata.nextLink,您可以用它来呼叫接下来的 50 个用户
  3. 重复迭代,直到得到@odata.nextLink 作为空值

参考文献

Graph REST API - 在应用程序中对 Microsoft Graph 数据进行分页

图形 REST API - 列出用户

您还可以参考如何使用 Graph SDK 客户端程序集完成分页这里

© www.soinside.com 2019 - 2024. All rights reserved.