Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用microsoft graph api获取自定义扩展属性_Java_Spring Boot_Azure Active Directory_Microsoft Graph Api - Fatal编程技术网

Java 如何使用microsoft graph api获取自定义扩展属性

Java 如何使用microsoft graph api获取自定义扩展属性,java,spring-boot,azure-active-directory,microsoft-graph-api,Java,Spring Boot,Azure Active Directory,Microsoft Graph Api,我正在尝试使用microsoft graph获取用户详细信息 我在回复中寻找一个自定义扩展元素,例如“extension_3a4189d71ad149c6ab5e65ac45bd6add_MyAttribute1” 当我用字符串检索响应时,我可以看到所有元素 final ResponseEntity<String> response = restTemplate.exchange("http://graph.windows.net/tenant.com/me?api-version=

我正在尝试使用microsoft graph获取用户详细信息

我在回复中寻找一个自定义扩展元素,例如“extension_3a4189d71ad149c6ab5e65ac45bd6add_MyAttribute1”

当我用字符串检索响应时,我可以看到所有元素

final ResponseEntity<String> response = restTemplate.exchange("http://graph.windows.net/tenant.com/me?api-version=1.6, HttpMethod.GET, new HttpEntity(headers),String.class);
final ResponseEntity response=restemplate.exchange(“http://graph.windows.net/tenant.com/me?api-version=1.6,HttpMethod.GET,新的HttpEntity(headers),String.class);
但是当我用com.microsoft.graph.models.extensions.User检索响应时,我再也看不到扩展了

final ResponseEntity<User> response = restTemplate.exchange("http://graph.windows.net/tenant.com/me?api-version=1.6, HttpMethod.GET, new HttpEntity(headers),User.class);
final ResponseEntity response=restemplate.exchange(“http://graph.windows.net/tenant.com/me?api-version=1.6,HttpMethod.GET,新的HttpEntity(headers),User.class);

我如何才能以比获取字符串对象更优雅的方式检索自定义扩展并逐个查找元素?

因为扩展属性是特定于租户的,这意味着它的非标准、sdk中没有现成的“对象类”会包含它,因为它附加了应用id。扩展名\u appid\u attribname。 所以你得自己处理。您可以尝试扩展user类并添加一个方法来读取或反序列化/映射来自graph api的json返回,类似于Hury所建议的,或者类似的方法。不太可能有现成的解决方案。 如果您真的不想手动映射对象,也有json库可以帮助您反序列化到某种动态对象

更新: 我深入研究了一下。但是,我发现在JavaSDK中您可以访问它。以下是文档:
你会这样做

String ext = 
    user
        .additionalDataManager()
        .get("extension_2lkj3l12jl3j2kj3_yourproperty")
        .getAsString();
试试看 希望这能有所帮助

请使用api
https://graph.microsoft.com/beta/users
而不是
https://graph.microsoft.com/v1.0/users
api
https://graph.microsoft.com/beta/users
将返回带有用户自定义数据的所有数据。

您可以尝试使用用户的所有字段(包括扩展字段)创建一个
用户
实体(bean),并将此
User
放入您的代码
ResponseEntity
User.class
是否还有其他包含此自定义扩展名的microsoft对象?我试过使用$expand=extension,但没有成功,因为我错过了阅读microsoft文档的机会。我本以为这个自定义扩展是它们元素的一部分。这些类型的扩展是否与文档中所称的“扩展”com.microsoft.graph.models.extensions.Extensionoh nice相同。