【发布时间】:2018-02-07 23:59:33
【问题描述】:
我正在通过 Microsoft Graph 从 AzureAD 请求用户列表。
我取回了 User 对象,但它们的 MemberOf 属性始终为空。
我想我可以使用 Expand 来专门请求该属性,虽然它不会导致错误,但它也不会填充该属性。
question and answer from mid-2016 表明该功能当时处于测试阶段,我认为它现在应该已经升级到生产 API 了?
var allUsers = await graphClient
.Users
.Request()
.Expand("memberOf")
.GetAsync();
var usersInGroup = allUsers
.Where(user => user.MemberOf.Any(memberOf => memberOf.Id.Equals(groupId, StringComparison.OrdinalIgnoreCase)))
.ToList();
(我已经尝试扩展“memberOf”和“MemberOf”。)
我可以通过群组检索成员列表。
但这会返回一个 ID 列表,所以我必须发出两个请求,而不仅仅是一个。
var groupMembers = await graphClient
.Groups[groupId]
.Members
.Request()
.GetAsync();
var groupMemberIds = groupMembers
.Select(groupMember => groupMember.Id)
.ToList();
var allUsers = await graphClient
.Users
.Request()
.GetAsync();
var usersInGroup = allUsers
.Where(user => groupMemberIds.Contains(user.Id))
.ToList();
如果获取属于组的 ID,然后过滤用户是正确的方法,那很好,我会这样做。
理想情况下,我想发出一个请求来检索用户对象并在服务器端完成过滤。
例如
var usersInGroup = await graphClient
.Users
.Request()
.Filter($"memberOf eq {groupId}")
.GetAsync();
显然该过滤器不起作用,但类似的东西会是理想的。
(有人指出我链接到了错误的文档集,所以我删除了这些链接以防止未来读者混淆)
【问题讨论】: