首页 > 解决方案 > 创建传入用户对象的用户 (Microsoft Graph)

问题描述

我正在尝试使用以下链接使用 microsoft graph 调用创建用户:https ://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=夏普

但是,有没有办法通过在azure函数中传入用户对象或用户对象的json表示形式作为参数来创建用户如下图所示?

[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/settings")] HttpRequest req, ILogger 记录器, 用户用户)

此外,有没有办法读取整个 req.Body (w/附加属性)并创建一个用户,而不是只应用所需的参数(如下所示)?每个用户都有不同的属性

{
    AccountEnabled = true,
    DisplayName = "displayName-value",
    MailNickname = "mailNickname-value",
    UserPrincipalName = "upn-value@tenant-value.onmicrosoft.com",
    PasswordProfile = new PasswordProfile
    {
        ForceChangePasswordNextSignIn = true,
        Password = "password-value"
    }
};
await graphClient.Users
    .Request()
    .AddAsync(user);

标签: c#azureazure-active-directorymicrosoft-graph-apiazure-ad-graph-api

解决方案


对于您的第一个问题,我认为我们不能传递一个用户对象来直接创建用户。但是我们可以将所有属性传递给函数来创建它。正如你提到的第二个问题,如果每个用户都有不同的属性,我们创建用户并不容易。因此,我们可以将所有属性作为 json 传递给函数,然后从 json 中读取 jsonreq并将这些属性连接为 json 字符串。之后,不要使用 graph sdk 创建用户。像下面的代码一样自己用graph api做一个post请求:

string str = "{\"displayName":\"xxxx\",\"mailNickname\":\"xxxx\"}";

var content = new StringContent(str, Encoding.UTF8, "application/json");

HttpClient client = new HttpClient();

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "your token");
var response = client.PostAsync("https://graph.microsoft.com/v1.0/users", content).Result;

推荐阅读