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

如何使用Microsoft Graph Beta Java SDK(6.4.0)Patch用户身份属性

解决Microsoft Graph Beta Java SDK 6.4.0中用户属性的Patch更新问题

在v6.x版本的Microsoft Graph Java SDK(包括beta版)中,UsersRequestBuilder(即graphClient.users())作为用户集合的请求构建器,本身没有patch()方法——因为patch是针对单个用户资源的更新操作,必须先定位到具体的单个用户实例,再调用对应的patch方法。

具体实现步骤

  1. 你通过filter找到目标用户、修改其identities属性的逻辑是正确的;
  2. 调用单个用户的patch方法提交更新:通过用户ID获取单个用户的请求构建器(byUserId(user.getId())),再传入修改后的User对象执行更新。

修改后的完整代码示例

GraphServiceClient graphClient = new GraphServiceClient(_clientSecretCredential,
            new String[] { "https://graph.microsoft.com/.default" });

// 省略其他前置代码...

String filter = String.format("identities/any(c:c/issuer eq '%s' and c/issuerAssignedId eq '%s')", issuer, issuerAssignedId); 

User user = graphClient
        .users()
        .get(requestConfig -> {
            requestConfig.queryParameters.filter = filter;
        })
        .getValue().get(0);

// 修改目标身份的issuerAssignedId
for (ObjectIdentity identity: user.getIdentities()) {
    if(identity.getIssuerAssignedId().equalsIgnoreCase(issuerAssignedId)){
        System.out.println("original issuerAssignedId = " + issuerAssignedId + " new issuerAssignedId = " + newIssuerAssignedId);
        identity.setIssuerAssignedId(newIssuerAssignedId);
    }
}

// 执行Patch更新:针对单个用户提交修改
User updatedUser = graphClient
        .users()
        .byUserId(user.getId()) // 定位到具体用户实例
        .patch(user); // 提交修改后的用户对象

// 可选:验证更新结果
System.out.println("Updated issuerAssignedId: " + updatedUser.getIdentities().stream()
        .filter(i -> i.getIssuer().equals(issuer))
        .findFirst().get().getIssuerAssignedId());

注意事项

  • 更新用户identities属性时,Graph API要求提交完整的identities数组,你现有代码直接修改数组内元素的方式是正确的,SDK会自动序列化整个数组提交;
  • 确保你的应用已被授予User.ReadWrite.All或Directory.ReadWrite.All的应用权限,否则会出现权限不足的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:33:16