【发布时间】:2016-12-22 14:21:14
【问题描述】:
注意:I originally posed this question 在客户端库 repo 中,他们回应说这是服务库中的问题,而不是 .NET 库中的问题。
在开发过程中,我们一直在做这样的事情来获取用户组:
var user = await GraphClient.Users[userId].Request().Expand("memberOf").GetAsync();
其结果被提供给一个方法,该方法将使用可能返回的“NextPageRequest”对象来获取当前页面之外的结果。我们的虚假开发用户帐户以及早期的真实用户从来没有足够的组成员资格来要求 NextPageRequest 逻辑,并且忘记了对其进行测试。
在获得拥有 20 多个组的用户后,最终清楚的是,发出上述详细信息的请求会返回一页的成员资格,但不会返回 NextPageRequest 以用于后续请求的选项。您关于集合的文档看起来应该是这样的。
我相信你已经知道,一种可行的方法是这样的:
List<Group> userGroups = await GraphClient.Users[userId].MemberOf.Request().GetAsync().CurrentPage.Where(p => p.GetType() == typeof(Microsoft.Graph.Group)).Cast<Microsoft.Graph.Group>().ToList();
据我们所知,这会返回用户的所有组成员身份。如果意图是 Expand 不与“memberOf”一起使用,那么它根本不应该工作。现在,旧代码在租户中的 800 名用户中的大约 760 名用户中运行良好,其余的是编写检查的用户 :)。如果我们做错了 .Expand("memberOf"),请告诉我。
此外,GetMemberGroups 的工作方式与 MemberOf 不同。目的是什么?也许做类似GetMemberGroups(securityEnabledOnly = false, expandGroupInfo = false) 的事情可能会更清楚。
【问题讨论】:
-
感谢您在 GitHub 上提出这个问题,这对我们帮助很大。