[英]MS Graph API C# Add user to group
我一直在研究如何使用 Microsoft Graph API(nuget 上提供的 dotnet/C# 庫)從 Azure AD 組中添加(以及稍后刪除)用戶。
忽略獲取連接的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 中查看可能更新.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.