C# 使用Microsoft图形客户端库访问user.MemberOf
注意:在客户端库repo中,他们回答说这是服务库中的问题,而不是.NET库中的问题 在开发过程中,我们一直在这样做,以获得用户组:C# 使用Microsoft图形客户端库访问user.MemberOf,c#,microsoft-graph-api,C#,Microsoft Graph Api,注意:在客户端库repo中,他们回答说这是服务库中的问题,而不是.NET库中的问题 在开发过程中,我们一直在这样做,以获得用户组: var user=await-GraphClient.Users[userId].Request().Expand(“memberOf”).GetAsync() 其结果被馈送到一个方法,该方法将使用假定返回的“NextPageRequest”对象获得当前页面以外的结果。我们的假开发用户帐户,以及早期的真实用户从来没有足够的组成员资格来要求NextPageReques
var user=await-GraphClient.Users[userId].Request().Expand(“memberOf”).GetAsync()代码>
其结果被馈送到一个方法,该方法将使用假定返回的“NextPageRequest”对象获得当前页面以外的结果。我们的假开发用户帐户,以及早期的真实用户从来没有足够的组成员资格来要求NextPageRequest逻辑,对它的测试被遗忘了
在获得20多个组的用户后,最终很明显,提出上述请求会返回一页的会员资格,但不会返回下一个用于后续请求选项的GEREQUEST。您关于集合的文档让人觉得应该这样做
我相信你已经知道,一种有效的方法是这样的:
List userGroups=wait-GraphClient.Users[userId].MemberOf.Request().GetAsync().CurrentPage.Where(p=>p.GetType()==typeof(Microsoft.Graph.Group)).Cast().ToList()代码>
据我们所知,这将返回用户的所有组成员身份。如果意图是Expand不能与“memberOf”一起使用,那么它就不应该工作。目前,在租户的800个用户中,有760个用户使用了旧代码,其余的用户编写了检查:)。如果我们的.Expand(“memberOf”)操作不正确,请告诉我
此外,GetMemberGroups的工作方式与MemberOf不同。目的是什么?也许像GetMemberGroups(securityEnabledOnly=false,expandGroupInfo=false)
这样的操作会更清晰 你的观察是正确的$expand在目录中受到一定限制,最多只能扩展20个项目,不支持分页。对于其他图形服务,这不一定是正确的。请参阅和$expand,其中对此进行了记录
不幸的是,更改行为以返回$expand=memberOf之类的不受支持的错误将代表一个破坏性的更改。我们可以考虑这一变化为一个新的版本。< /P>
我们还希望向Graph元数据文档添加更多注释,这些注释可能能够描述支持展开和分页的位置。这也将有助于限制客户端库不显示服务无法支持的选项
希望这能有所帮助,在看了一些之后,我找到了一个答案,可以为用户返回所有组
public async Task<List<string>> GetCurrentUserGroups(GraphServiceClient graphClient)
{
var totalGroups = new List<string>();
var groups = await graphClient.Me.MemberOf.Request().GetAsync();
while (groups.Count > 0)
{
foreach (Group g in groups)
{
totalGroups.Add(g.DisplayName);
}
if (groups.NextPageRequest != null)
{
groups = await groups.NextPageRequest.GetAsync();
}
else
{
break;
}
}
return totalGroups;
}
公共异步任务GetCurrentUserGroups(GraphServiceClient graphClient)
{
var totalGroups=新列表();
var groups=await graphClient.Me.MemberOf.Request().GetAsync();
而(groups.Count>0)
{
foreach(g组分组)
{
totalGroups.Add(g.DisplayName);
}
if(groups.NextPageRequest!=null)
{
groups=wait groups.NextPageRequest.GetAsync();
}
其他的
{
打破
}
}
返回总体组;
}
感谢您在GitHub上提出这个问题,在这里,这是一个巨大的帮助。