簡體   English   中英

MS Graph API C#將用戶添加到組

[英]MS Graph API C# Add user to group

我一直在研究如何使用 Microsoft Graph API(nuget 上提供的 dotnet/C# 庫)從 Azure AD 組中添加(以及稍后刪除)用戶。

Nuget MS 圖形 API

忽略獲取連接的GraphServiceClient等的所有其他內容。我正在嘗試與下面的示例非常相似的代碼,沒有出現任何異常(表明一切都很好)但是當我再次通過 API 獲得該組時,它仍然沒有任何成員!

修改嘗試后返回的組對象的快速監視

有趣的是(順便說一句),當我請求user對象的memberOf屬性並告訴它擴展它時,它仍然返回 null。

var user = await client.Users[userPrincipalName]
             .Request()
               .Select("id,memberOf")
                 .Expand("memberOf")
                   .GetAsync();

var group = await client.Groups[groupId]
              .Request()
                .Select("members")
                  .Expand("members")
                    .GetAsync();

group.Members.Add(user);

await client.Groups[groupId].Request().UpdateAsync(group);

// userPrincipalName => "test.user@mytenant.com"
// groupId => the object GUID for the group

有誰知道我在這里做錯了什么? 我用來編寫此代碼的文檔基於以下文檔的鏈接:

“組”的 API 文檔

將成員添加到組

此外,我嘗試在此處建議的解決方案上設置樣式,為用戶設置許可證:

通過 Graph API 分配用戶許可

像往常一樣,感謝您的幫助。

彼得

額外的

我還嘗試在圖形 API 中查看可能更新.Members屬性/資源而不是組本身:

await client.Groups[groupId].Members.Request(). // <-- Only has GetAsync()

但它只有GetAync()方法可用。

根據答案更新

var usersGroups = await client.Users[userPrincipalName].MemberOf.Request().GetAsync();

if (!usersGroups.Any(g => g is Group && g.Id == groupId))
{
    // User is not a member of the group, add them.
    var user = await client.Users[userPrincipalName].Request().Select("id").GetAsync();
    await client.Groups[groupId].Members.References.Request().AddAsync(user);
}

我已經根據答案添加了上面的代碼片段,因為我認為它簡潔地回答了有關添加成員的問題。

感謝南宇的解答。

要將用戶添加到組,您可以使用:

User userToAdd = await graphClient.Users["objectID"].Request().GetAsync(); 
await graphClient.Groups["groupObjectID"].Members.References.Request().AddAsync(userToAdd);

獲取組成員:

        List<ResultsItem> items = new List<ResultsItem>();

        // Get group members. 
        IGroupMembersCollectionWithReferencesPage members = await graphClient.Groups[id].Members.Request().GetAsync();

        if (members?.Count > 0)
        {
            foreach (User user in members)
            {
                // Get member properties.
                items.Add(new ResultsItem
                {
                    Properties = new Dictionary<string, object>
                    {
                        { Resource.Prop_Upn, user.UserPrincipalName },
                        { Resource.Prop_Id, user.Id }
                    }
                });
            }
        }

獲取當前用戶是直接成員的組,您可以嘗試:

IUserMemberOfCollectionWithReferencesPage memberOfGroups = await graphClient.Users["testnanyu@testbasic1.onmicrosoft.com"].MemberOf.Request().GetAsync();

            if (memberOfGroups?.Count > 0)
            {
                foreach (var directoryObject in memberOfGroups)
                {

                    // We only want groups, so ignore DirectoryRole objects.
                    if (directoryObject is Group)
                    {
                        Group group = directoryObject as Group;
                        items.Add(new ResultsItem
                        {
                            Display = group.DisplayName,
                            Id = group.Id
                        });
                    }

                }
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM