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

如何使用Microsoft Graph Java SDK按公司名称筛选目录中的用户

如何使用Microsoft Graph Java SDK按公司名称筛选目录中的用户

嘿,看你已经搞定了获取所有用户的代码,接下来要按公司名称筛选其实超简单!只需要在Graph请求里加上$filter参数就行,我来给你调整代码并讲清楚细节~

核心思路

Microsoft Graph支持用$filter查询参数来过滤返回的用户集合,针对用户的companyName属性,我们可以直接写筛选条件:companyName eq '你的目标公司名称'(注意字符串要用单引号包裹)。如果需要模糊匹配,还可以用contains操作符,这个后面我会提到。

修改后的完整代码

我把你的代码调整好了,重点就是在构建用户请求时添加.filter()方法:

TokenCredentialAuthProvider authProvider = new TokenCredentialAuthProvider(
        Collections.singletonList("https://graph.microsoft.com/.default"),
        clientSecretCredential
);

GraphServiceClient<Request> graphClient = GraphServiceClient
        .builder()
        .authenticationProvider(authProvider)
        .buildClient();

List<User> filteredUsers = new LinkedList<>();
// 替换成你要筛选的目标公司名称
var usersPage = graphClient.users()
        .buildRequest()
        .filter("companyName eq 'Contoso'") // 关键:添加公司名称过滤条件
        .get();

// 保持原有的分页遍历逻辑,确保获取所有符合条件的用户
while (usersPage != null) {
    usersPage.getCurrentPage().forEach(filteredUsers::add);
    usersPage = usersPage.getNextPage() != null ?
            usersPage.getNextPage().buildRequest().get() : null;
}

// 输出时可以顺便打印公司名称,验证筛选结果
filteredUsers.forEach(user ->
        System.out.println("User: " + user.displayName + " | ID: " + user.id + " | Company: " + user.companyName)
);

额外注意事项

  • 权限检查:确保你的应用已经申请了User.Read.All或者Directory.Read.All权限,不然可能读取不到companyName属性哦。
  • 特殊字符处理:如果公司名称里包含单引号,比如O'Neil,要把单引号转义成两个单引号,也就是写成O''Neil,不然会导致查询语法错误。
  • 模糊匹配需求:如果不需要精确匹配,只要公司名称包含某个关键词,就把过滤条件改成contains(companyName, 'Contoso'),这样所有公司名里带Contoso的用户都会被筛选出来。

备注:内容来源于stack exchange,提问作者Xiaozang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 15:49:28