【发布时间】:2018-05-12 05:17:11
【问题描述】:
是否可以使用 rest api 将网站集管理员设置为 SharePoint online 中的用户?
【问题讨论】:
标签: sharepoint office365 sharepoint-online
是否可以使用 rest api 将网站集管理员设置为 SharePoint online 中的用户?
【问题讨论】:
标签: sharepoint office365 sharepoint-online
您首先需要通过EnsureUser 方法将用户添加到网站集,然后您需要通过将他的IsSiteAdmin 属性设置为用户@MarkMascolino 提到的true 来将他设置为管理员。
在执行我们的代码之前,我们需要用户的电子邮件。此外,执行此 REST 调用的用户本人必须是管理员。
代码如下,请尝试根据您的用户和网站集进行修改:
function ensureUser(webUrl,loginName)
{
var payload = {
'logonName': loginName,
};
return $.ajax({
url: webUrl + "/_api/web/ensureuser",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(payload),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"accept": "application/json;odata=verbose"
}
});
}
function setSiteAdmin(webUrl,userId){
var payload = {
"__metadata": { "type": "SP.User" },
"IsSiteAdmin": true
};
return $.ajax({
url: webUrl + "/_api/web/getuserbyid("+ userId +")",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(payload),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"accept": "application/json;odata=verbose",
"X-HTTP-Method": "MERGE"
}
});
}
var loginName = 'i:0#.f|membership|user.name@tenantname.onmicrosoft.com'
ensureUser(_spPageContextInfo.siteAbsoluteUrl,loginName)
.done(function(data)
{
console.log('User has been added');
console.log(data);
setSiteAdmin(_spPageContextInfo.siteAbsoluteUrl,data.d.Id)
.done(function(response){
console.log(response);
console.log("set user as admin");
}).fail(function(error){
console.log(error);
});
})
.fail(function(error){
console.log('An error occured while adding user');
});
确保用户代码参考 - Sharepoint 2013: EnsureUser via REST API
【讨论】:
是的,这是可能的。此页面详细介绍了用户和组的 RESTful API: https://msdn.microsoft.com/en-us/library/office/dn531432.aspx#bk_User
特别注意如何使用 POST 对用户进行更改。此外,如果您查看可用的字段,您将看到字段 IsSiteAdmin 的类型为 Boolean,可读写,并具有以下描述:
获取或设置一个布尔值,该值指定用户是否是网站集管理员。
【讨论】: