如何获得用户的组名是使用Microsoft Graph API的成员?

问题描述

我想知道用户是AAD成员的组列表。根据组的成员身份,他们可以执行其他功能。为此,我使用了MS Graph API,但仅获得组ID,而不获得组名。 我使用以下两种方式来使用图形API。 第一种使用的方法

await  graphClient.Users[upn].GetMemberGroups(false).Request().PostAsync()

响应:

[ "fee2c45b-915a-4a64-b130-f4eb9e75525e","4fe90ae7-065a-478b-9400-e0a0e1cbd540","e0c3beaf-eeb4-43d8-abc5-94f037a65697" ]

使用的第二种方法

await  graphClient.Users[upn].MemberOf.Request().GetAsync();

响应:

[
    {
        "deletedDateTime": null,"id": "1c4934554-5006-403a-bf4f-bsdfeerwfs6fe6f","oDataType": "#microsoft.graph.group","additionalData": {
            "creationoptions": [],"isAssignabletoRole": null,"resourceBehaviorOptions": [],"resourceProvisioningOptions": []
        }
    },{
        "deletedDateTime": null,"id": "f8975c2f-7651d-4f3a-1234-4ec3808a0ac2","additionalData": {
            "creationoptions": [
                []
            ],"resourceProvisioningOptions": [
                []
            ]
        }
    }
]

我需要的是组名称和组ID。如何有效地将两者融合在一起?还是我可以为此目的尝试其他任何方法

解决方法

对我来说,以下工作可获取组名:

var page = await graphClient
    .Users[userObjectId]
    .MemberOf
    .Request()
    .GetAsync();

var names = new List<string>();
names.AddRange(page
        .OfType<Group>()
        .Select(x => x.DisplayName)
        .Where(name => !string.IsNullOrEmpty(name)));
while (page.NextPageRequest != null)
{
    page = await page.NextPageRequest.GetAsync();
    names.AddRange(page
        .OfType<Group>()
        .Select(x => x.DisplayName)
        .Where(name => !string.IsNullOrEmpty(name)));
}

return groupNames;

组的响应中应该有一个DisplayName / displayName。