java - 如何使用 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=1.6, HttpMethod.GET, new 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);

如何以比获取 String 对象并逐一查找元素更优雅的方式检索自定义扩展?

最佳答案

因为扩展属性是特定于您的租户的,这意味着它是非标准的,sdk 中没有开箱即用的“对象类”会包含它,因为它附加了应用程序 ID。扩展名_appid_属性名称。 所以你必须自己处理。您可以尝试扩展用户类并添加一个方法来读取或反序列化/映射从图形 api 返回的 json,类似于 Hury 建议的内容,或者类似的效果。对此不太可能有现成的解决方案。 如果您确实不想手动映射对象,还有一些 json 库可以帮助您反序列化为某种动态对象。

更新: 我进一步研究了这一点。我不认为它在extensions.extension中,但是我确实发现在java sdk中你可以访问它。这是文档:https://github.com/microsoftgraph/msgraph-sdk-java/wiki/Working-with-Open-Types
你会做类似的事情

String ext = 
    user
        .additionalDataManager()
        .get("extension_2lkj3l12jl3j2kj3_yourproperty")
        .getAsString();

尝试一下 希望这有帮助。

关于java - 如何使用 microsoft graph api 获取自定义扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61767292/

相关文章:

java - JDBC SQL 时区

gradle - 如何使用 gradle 根据项目版本有条件地构建工件?

使用内置策略时的 Azure AD B2C 'Invalid username or password'

java - 为 x 和 y 设计一个循环内的公式来满足这些要求

java - 使用Java读取Spark中包含结构类型的CSV文件

spring-boot - 无法使用 Apache Bench 测试 Spring Boot Webflux 性能

java - 如何使用spring注解将一个POJO对象注入(inject)到另一个POJO?

azure - 在 Multi-Tenancy 应用程序中,如何检查在 azure 门户中注册应用程序的租户数据?

azure - 是否可以使用 PowerShell 中的服务主体将角色和范围分配给新创建的应用程序?

java - 检查最长回文的程序不起作用