升级GraphAPI SDK至6.5.x后查询用户组成员身份失败
Graph SDK 6.5.x升级后用户组成员查询功能异常问题
我将调用Graph API获取用户详情的应用依赖从Graph API SDK 5.x版本升级至最新6.5.x版本后,查询用户组成员身份的功能无法正常工作(该功能在5.x版本中可正常运行)。
我的代码如下:
public List<Group> fetchGroupMemberships(String userId) { if (StringUtils.isEmpty(userId)) { log.warn("Cannot fetch group memberships for null user or a user with an empty/null id..."); return List.of(); } var groupMemberPage = client.users() .byUserId(userId) .memberOf() .get(); var fetched = new ArrayList<Group>(); while (groupMemberPage != null) { var groups = groupMemberPage.getValue() != null ? groupMemberPage.getValue() .stream() .filter(object -> object instanceof Group) .map(object -> (Group) object) .toList() : null; if (CollectionUtils.isNotEmpty(groups)) { log.debug("Appending groups {} to existing list...", groups); fetched.addAll(groups); } var odataNext = groupMemberPage.getOdataNextLink(); if (StringUtils.isEmpty(odataNext)) { log.debug("No more groups to fetch. Breaking..."); break; } else { log.debug("Fetching next page of groups..."); groupMemberPage = client.users() .byUserId(userId) .withUrl(odataNext) .memberOf() .get(); } } return fetched; }
传入userId查询用户组成员身份时,抛出以下异常:
java.lang.IllegalStateException: Not a JSON Array: {"@odata.type":"#microsoft.graph.group","id":"<uuid-of-group>","deletedDateTime":null,"classification":null,"createdDateTime":null,"creationOptions":[],"description":null,"displayName":null,"expirationDateTime":null,"groupTypes":[],"isAssignableToRole":null,"mail":null,"mailEnabled":null,"mailNickname":null,"membershipRule":null,"membershipRuleProcessingState":null,"onPremisesDomainName":null,"onPremisesLastSyncDateTime":null,"onPremisesNetBiosName":null,"onPremisesSamAccountName":null,"onPremisesSecurityIdentifier":null,"onPremisesSyncEnabled":null,"preferredDataLocation":null,"preferredLanguage":null,"proxyAddresses":[],"renewedDateTime":null,"resourceBehaviorOptions":[],"resourceProvisioningOptions":[],"securityEnabled":null,"securityIdentifier":null,"theme":null,"uniqueName":null,"visibility":null,"onPremisesProvisioningErrors":[],"serviceProvisioningErrors":[]} at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:117) at com.microsoft.kiota.serialization.JsonParseNode.iterateOnArray(JsonParseNode.java:167) at com.microsoft.kiota.serialization.JsonParseNode.getUntypedValue(JsonParseNode.java:245) at com.microsoft.kiota.serialization.JsonParseNode.tryGetAnything(JsonParseNode.java:317) at com.microsoft.kiota.serialization.JsonParseNode.assignFieldValues(JsonParseNode.java:299) at com.microsoft.kiota.serialization.JsonParseNode.getObjectValue(JsonParseNode.java:213) at com.microsoft.kiota.serialization.JsonParseNode.lambda$getCollectionOfObjectValues$1(JsonParseNode.java:195) at com.microsoft.kiota.serialization.JsonParseNode.iterateOnArray(JsonParseNode.java:175) at com.microsoft.kiota.serialization.JsonParseNode.getCollectionOfObjectValues(JsonParseNode.java:195) at com.microsoft.graph.models.DirectoryObjectCollectionResponse.lambda$getFieldDeserializers$0(DirectoryObjectCollectionResponse.java:34) at com.microsoft.kiota.serialization.JsonParseNode.assignFieldValues(JsonParseNode.java:297) at com.microsoft.kiota.serialization.JsonParseNode.getObjectValue(JsonParseNode.java:213) at com.microsoft.kiota.http.OkHttpRequestAdapter.send(OkHttpRequestAdapter.java:296) at com.microsoft.graph.users.item.memberof.MemberOfRequestBuilder.get(MemberOfRequestBuilder.java:110) at com.microsoft.graph.users.item.memberof.MemberOfRequestBuilder.get(MemberOfRequestBuilder.java:96)
从异常信息看,客户端无法解析JSON响应,但我不清楚具体原因。我是按照官方文档中的方法实现的,目前可以回退到5.x版本恢复功能,但希望了解问题根源,怀疑和某个GitHub问题相关,但不确定,求帮助。
内容的提问来源于stack exchange,提问作者vkourt
相关产品推荐
相关产品推荐

