是否有 Microsoft Graph API 可以找出 AAD 组中的用户数量?目前,这是我如何找到它的代码。想知道是否有更快的方法?
private async Task<int> GetUserIds(string groupId)
{
List<string> userIds = new List<string>();
var usersFromGroup = await _groupMembersService.GetGroupMembersPageByIdAsync(groupId);
usersFromGroup.AdditionalData.TryGetValue("@odata.nextLink", out object nextLink);
var nextPageUrl = (nextLink == null) ? string.Empty : nextLink.ToString();
userIds.AddRange(usersFromGroup.OfType<Microsoft.Graph.User>().Select(x => x.Id));
while (!string.IsNullOrEmpty(nextPageUrl))
{
usersFromGroup = await _groupMembersService.GetGroupMembersNextPageAsnyc(usersFromGroup, nextPageUrl);
usersFromGroup.AdditionalData.TryGetValue("@odata.nextLink", out object nextLink2);
nextPageUrl = (nextLink2 == null) ? string.Empty : nextLink2.ToString();
userIds.AddRange(usersFromGroup.OfType<Microsoft.Graph.User>().Select(x => x.Id));
}
return userIds.Count;
}
}
public async Task<IGroupTransitiveMembersCollectionWithReferencesPage>GetGroupMembersPageByIdAsync(string groupId)
{
return await this.graphServiceClient
.Groups[groupId]
.TransitiveMembers
.Request()
.Top(this.MaxResultCount)
.WithMaxRetry(this.MaxRetry)
.GetAsync();
}
public async Task<IGroupTransitiveMembersCollectionWithReferencesPage> GetGroupMembersNextPageAsnyc(
IGroupTransitiveMembersCollectionWithReferencesPage groupMembersRef,
string nextPageUrl)
{
groupMembersRef.InitializeNextPageRequest(this.graphServiceClient, nextPageUrl);
return await groupMembersRef
.NextPageRequest
.GetAsync();
}
答案 0 :(得分:0)
您可以使用 list members Graph API 获取群组的直接成员列表。
正如 Example 3 所说,我们可以使用 OData cast
和 $count
来仅获取用户成员资格的计数。
GET https://graph.microsoft.com/v1.0/groups/{id}/members/microsoft.graph.user/$count
ConsistencyLevel: eventual
很遗憾,我在 Graph SDK 中找不到 OData cast。您可以在 C# 中使用 HttpRequestMessage 调用此请求 URL,请参阅 here。
var requestUrl = "https://graph.microsoft.com/v1.0/groups/{id}/members/microsoft.graph.user/$count";
var message = new HttpRequestMessage(HttpMethod.Get, requestUrl);
message.Headers.Add("consistencylevel", "eventual");
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
var response = await graphClient.HttpProvider.SendAsync(message);
答案 1 :(得分:0)
您可以使用此图形 API 获取任何组的计数。 https://graph.microsoft.com/v1.0/groups/{group-object-id}/members/$count
确保为此在请求标头中添加 ConsistencyLevel = Eventual。 为您测试了这是图形浏览器: