我正在使用Microsoft Graph API与我的ADB2C应用程序进行交互。我正在代码中单独提取、创建、更新和删除用户,一切正常。
现在有一个特定的要求更新某些字段的几个用户,并提供它作为一个功能,以管理员用户.我使用下面的代码作为例子,我从这个link和这个link批量更新adb2c中的用户.
string filterQuery = string.Join(" or ", emails.Select(email => $"mail eq '{email}'"));
var users = new List<User>();
var batchRequestContent = new BatchRequestContentCollection(graphClient);
var result = await graphClient.Users.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = filterQuery;
});
if (result != null && result.Value.Count > 0)
{
users.AddRange(result.Value);
}
foreach (var user in users)
{
user.AccountEnabled = !value;
var userRequest = graphClient.Users.ToPostRequestInformation(user);
await batchRequestContent.AddBatchRequestStepAsync(userRequest);
}
var response = await graphClient.Batch.PostAsync(batchRequestContent);
var responses = await response.GetResponsesStatusCodesAsync();
字符串
现在,由于这是一个发布请求,因此它会失败,并出现如下异常
必须指定密码才能创建新用户。
我更改了userRequest.HttpMethod = Method.PATCH;
,使其行为类似于补丁(更新),但发生了以下异常。
请求目标不允许使用指定的HTTP方法。
所以问题是如何使用上面的参考示例来批量更新使用ms graph API v5的用户。
谢谢.
1条答案
按热度按时间7lrncoxx1#
字符串
代码为我工作。
请允许我指出一些问题。首先,对于更新用户图API,我们只有端点选项
PATCH /users/{id| userPrincipalName}
这意味着使用SDK,我们只能为特定用户
await graphClient.Users["userId"].PatchAsync(requestBody)
更新用户配置文件,但不能使用代码var userRequest = graphClient.Users.ToPostRequestInformation(user);
。您的代码看起来像是将整个用户模型添加到请求中,并让API自动检测谁需要更新,但这是不可行的。第二个问题是,我们试图更新一个用户,所以我们需要得到的请求不是
ToPostRequestInformation
,而是ToPatchRequestInformation
。第三个是我自己的问题,一开始我只为两个请求使用了
requestBody
,但在执行代码后,我发现user2
没有更新,在我为user 2创建requestBody2
后,它工作了。第四个是我自己的问题,以及,在第一次当我试图更新
businessPhones
像什么样的演示显示,它失败了,我在 Postman 测试,我得到了错误消息与Insufficient privileges
,这是因为我试图更新管理员用户配置文件,这需要其他权限,这一节提到了它.