我需要知道如何使用针对Sharepoint的REST API或任何Web服务来为我的O365设置中的用户设置 IsSiteAdmin 属性为true。我可以通过Powershell做到这一点,但我正在寻找通过API的解决方案。
不好意思是模糊不清,问题实际上是管理员(公司管理员)是否将网站上的网站用户不作为网站集管理员分配给用户(比如说自己)其他租户用户的OneDrive(我的网站)。
假设管理员是 abc @ mytenant @ onmicrosoft.com ,并且有一位用户说 pqr @ mytenant @ onmicrosoft.com 。这个用户的OneDrive(我的网站)将是;
https://mytenant-my.sharepoint.com/personal/prq_onmicrosoft_com
我可以在这个网站上制作abc@mytenant.onmicrosoft.com(谁不是pqr @ mytenant @ onmicrosoft.com上的网站用户)网站集管理员?
非常感谢!
答案 0 :(得分:1)
端点Uri :/_api/web/siteUsers/getByLoginName(@u)?@u='userloginName'
方法:POST
正文:{ '__metadata':{ 'type': 'SP.User' }, 'IsSiteAdmin':'true' }
标题:
"content-type": "application/json; odata=verbose"
"X-HTTP-Method": "MERGE"
JavaScript示例
function updateUser(loginName, properties)
{
var endpointUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/siteUsers/getByLoginName(@u)?@u='" + encodeURIComponent(loginName) + "'";
var userPayload = { '__metadata': { 'type': 'SP.User' }};
for(var p in properties)
userPayload[p] = properties[p];
var headers = {};
headers["X-HTTP-Method"] = "MERGE";
return executeRequest(endpointUrl,'POST',headers,userPayload);
}
,其中
function executeRequest(url,method,headers,payload)
{
if (typeof headers == 'undefined'){
headers = {};
}
headers["Accept"] = "application/json;odata=verbose";
if(method == "POST" || method == "PUT") {
headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
}
var ajaxOptions =
{
url: url,
type: method,
contentType: "application/json;odata=verbose",
headers: headers
};
if(method == "POST" || method == "PUT") {
ajaxOptions.data = JSON.stringify(payload);
}
return $.ajax(ajaxOptions);
}
用法
var loginName = 'i:0#.f|membership|username@tenant.onmicrosoft.com';
var properties = {'IsSiteAdmin': true};
updateUser(loginName,properties)
.done(function(value){
console.log('User has been assigned as site collection admin');
})
.fail(function(error){
console.log(JSON.stringify(error));
});