【发布时间】:2017-05-22 14:17:38
【问题描述】:
我一直在研究如何使用 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
有谁知道我在这里做错了什么?我用来编写此代码的文档是基于以下文档的链接:
另外,我尝试在此处建议的解决方案中设置样式,为用户设置许可证:
Assign user license via 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);
}
我已经根据答案添加了上面的代码sn-p,因为我认为它简洁地回答了有关添加成员的问题。
感谢南宇的解答。
【问题讨论】:
标签: c# api azure microsoft-graph-api