创建传入用户对象的用户 (Microsoft Graph)

Posted

技术标签:

【中文标题】创建传入用户对象的用户 (Microsoft Graph)【英文标题】:Create a user passing in a user object (Microsoft Graph) 【发布时间】:2021-02-12 12:10:44 【问题描述】:

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

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

[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/settings")] HttpRequest req, ILogger logger, User user)

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


    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);

【问题讨论】:

【参考方案1】:

对于您的第一个问题,我认为我们不能将 User 对象传递给直接创建用户的函数。但是我们可以将所有属性传递给函数来创建它。正如您提到的第二个问题,如果每个用户都有不同的属性,我们创建用户并不容易。因此,我们可以将所有属性作为 json 传递给函数,然后从 req 中读取 json 并将这些属性连接为 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;

【讨论】:

感谢您的回答。但是,当您创建用户时,必须填写必填字段(accountEnabled、displayName、onPremisesImmutableId、password 等)。如果我要使用用户对象并将其作为 req 中的内容传递,它将不会被创建,因为它没有指定必填字段(例如:密码 = null。需要设置密码)。在传递 json 时是否有解决方法?

以上是关于创建传入用户对象的用户 (Microsoft Graph)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 权限(grantrevoke)

centos7下安装oracle11gR2

API获取当前进程的用户对象和GDI对象

oracle11gR2环境搭建

CentOS7静默安装数据库oralce11gR2

考试用户管理