我正在尝试通过Microsoft-Graph获取用户详细信息
我正在寻找响应中的自定义扩展元素,例如“ extension_3a4189d71ad149c6ab5e65ac45bd6add_MyAttribute1”
当我使用String检索响应时,我可以看到所有元素。
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对象并一一查找元素相比,我如何以更优雅的方式检索自定义扩展?
答案 0 :(得分:1)
因为扩展属性是特定于您的租户的,这意味着它是非标准的,因此在sdk中没有开箱即用的“对象类”会包含它,因为它附加了应用程序ID。 extension_appid_attribname。 因此您必须自己处理。您可以尝试扩展用户类,并添加一种方法来读取或反序列化/映射来自图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();
尝试一下 希望有帮助。
答案 1 :(得分:0)
请使用api
https://graph.microsoft.com/beta/users
而不是 https://graph.microsoft.com/v1.0/users
api https://graph.microsoft.com/beta/users
将返回包含用户自定义数据的所有数据。