mat*_*d91 1 c# microsoft-graph-api graphserviceclient
我正在尝试构建一个查询,在其中传递 groupId 参数,并使用 C# 中的 GraphServiceClient 作为回报获取所有用户及其组成员身份。
我能够在一个查询中获取用户和组成员身份,并且能够在单独的查询中通过 groupId(但没有组成员身份)获取所有用户。但我无法将这两个查询合并为一个结果。是否可以?
这是我获取用户及其组成员身份的代码(使用带有 memberOf 的扩展):
var users = await _graphServiceClient.Users
.Request()
.Filter(graphFilter) // used for searching on givenName and surname
.Select($"givenName,surname,mail,mobilePhone,id,userPrincipalName")
.Expand(e => e.MemberOf)
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
这是我的代码,用于获取给定组中的用户:
var users = await _graphServiceClient
.Groups[groupId] // Id of the group I want to get users from
.Members
.Request()
.Select($"givenName,surname,mail,mobilePhone,id,userPrincipalName")
//.Expand(e => e.MemberOf) // e is a DirectoryObject, so this does not compile.
//.Expand(e => (e as Microsoft.Graph.User).MemberOf)
//.Expand("memberOf")
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
有什么办法可以解决我的案子吗?我目前正在研究一种新方法,在从 /users 请求时是否可以在过滤器中使用 MemberOf,但我还不确定是否可能。
使用以下查询在 Graph Explorer 中执行此操作:
GET https://graph.microsoft.com/v1.0/groups/{groupId}/members/microsoft.graph.user?$expand=memberOf
Run Code Online (Sandbox Code Playgroud)
为类型添加这个特殊参数会使用法有点复杂,但可以做到:
var url = serviceClient.Groups[groupId].Members.AppendSegmentToRequestUrl("microsoft.graph.user?$expand=memberOf");
var request = new HttpRequestMessage(HttpMethod.Get, url);
await serviceClient.AuthenticationProvider.AuthenticateRequestAsync(request);
var response = await serviceClient.HttpProvider.SendAsync(request);
Run Code Online (Sandbox Code Playgroud)
目前的V5 SDK中直接支持该调用,方法如下:
var users = await serviceClient.Groups[groupToAdd].Members.GraphUser.GetAsync(config =>
config.QueryParameters.Expand = new[] { "memberOf" });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |