如何设置" IsSiteAdmin"对于使用用于Sharepoint的Webservice / REST API的用户,属性是否为true?

时间:2015-03-16 10:21:39

标签: sharepoint office365 onedrive

我需要知道如何使用针对Sharepoint的REST API或任何Web服务来为我的O365设置中的用户设置 IsSiteAdmin 属性为true。我可以通过Powershell做到这一点,但我正在寻找通过API的解决方案。

更新1

不好意思是模糊不清,问题实际上是管理员(公司管理员)是否将网站上的网站用户作为网站集管理员分配给用户(比如说自己)其他租户用户的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上的网站用户)网站集管理员?

非常感谢!

1 个答案:

答案 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));
   });

参考

Users, groups, and roles REST API reference