C# MsGraph-SDK:发送 BatchRequest 以使用 Microsoft Graph SDK 获取管理器链接

C# MsGraph-SDK: Send a BatchRequest to get manager links using Microsoft Graph SDK

首先请分享一下有没有MSGraph SDK的官方文档可以参考

我有一个场景,我想在不分别提供用户和组对象 ID 的情况下从 AAD 查询所有经理和成员链接。目前在 DQ 频道中支持,即我可以使用 MsGraphSDK 做这样的事情:

MsGraphClient.Users.Delta().Request().Select("manager")

MsGraphClient.Groups.Delta().Request().Select("members")

由于性能问题和其他问题,我不想使用 DQ 进行初始同步。 我的后备选项是直接通过 Graph 进行查询,所以我想执行如下操作,但这不会 return 任何结果:

MsGraphClient.Users.Request().Select("manager")

MsGraphClient.Groups.Request().Select("members")

看起来这在较低的 (AADGraph) 层目前甚至都不支持。不对的地方还请指正,有解决方法请提供!

所以我的备用方法是拉取所有用户和组的 aadObjectId,并分别显式查询经理和成员链接。

就我而言,AAD 中可能有 50 万个用户对象,我想避免对 AAD 进行 50 万次单独的 GetManager 调用。相反,我想尽可能多地批处理图形请求。

我无法从 Internet 上找到太多关于通过 SDK 发送 Batch 请求的帮助。 这是我正在做的事情:

我有这个 BatchRequestContent:

var batchRequestContent = new BatchRequestContent();
foreach (string aadObjectId in aadObjectIds)
{
    batchRequestContent.AddBatchRequestStep(new BatchRequestStep(aadObjectId, Client.Users[aadObjectId].Manager.Request().GetHttpRequestMessage()));
}

我正在尝试通过 GraphSDK 发送包含此内容的 BatchRequest 以获得 BatchResponse。 SDK 目前支持吗?如果是,那么程序是什么?任何文档或示例?如何读回批处理响应?最后,批量请求的数量是否有限制?

谢谢,

这里是相关的post:$expand=manager does not expand manager

v1.0 端点中的 manager 和 directReports 关系目前不支持 $expand。它在 beta 端点中受支持,但 API returns 大量丢弃信息的方法:https://graph.microsoft.com/beta/users?$expand=manager

客户端库目前部分支持批处理,尽管我们有几个拉取请求来提供更好的支持 与下一个版本 (PR 1 and 2).

要对当前库和经过身份验证的客户端使用批处理,您需要执行以下操作:

var authProv = MsGraphClient.AuthenticationProvider;
var httpClient = GraphClientFactory.Create(authProv);

// Send batch request with BatchRequestContent.
HttpResponseMessage response = await httpClient.PostAsync("https://graph.microsoft.com/v1.0/$batch", batchRequestContent);

// Handle http responses using BatchResponseContent.
BatchResponseContent batchResponseContent = new BatchResponseContent(response);