我如何使用 Graph API 通过 id 或 userPrincipalName 获取用户对象?

How can i get user objects by id or userPrincipalName using Graph API?

我正在尝试使用 Graph API 从 Active Directory 获取用户。为此,我正在使用用户 ID 列表。

    String selectQuery = "id,mail,givenName,surname,displayName,businessPhones,department,assignedLicense";
    List<Option> requestOptions = new LinkedList<>();
    requestOptions.add(new QueryOption("$select", selectQuery));
    IGraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(new SimpleAuthProvider(accessToken)).buildClient();

    List<User> users = new ArrayList<>();
    for (String userID : userList) {
        IUserRequest request = graphClient
                .users()
                .byId(userID)
                .buildRequest(requestOptions);
        users.add(request.get());
    }

    return users;

使用上面的代码我收到下面的输入。

[com.microsoft.graph.models.extensions.User@5042e9c3, com.microsoft.graph.models.extensions.User@1c9fc2e2]

我想接收我正在搜索的用户的用户资源字段(例如邮件、givenName、姓氏、displayName、businessPhones 等)。我在 Graph Explorer 中使用了示例查询。但是我无法通过 java sdk 获得多个用户。我怎样才能做到这一点?

你的代码是正确的,你已经得到了用户。

你需要轮询users得到他们对应的属性,像这样:

for (User user : users) {
    System.out.println("id:" + user.id + " mail:" + user.mail + " displayName:" + user.displayName);
}