【问题标题】:How can I set "IsSiteAdmin" property true for a user using Webservice/REST API for Sharepoint?如何为使用 Webservice/REST API for Sharepoint 的用户设置“IsSiteAdmin”属性为真?
【发布时间】:2015-03-17 19:58:22
【问题描述】:

我需要知道如何在我的 O365 设置中使用 REST API for Sharepoint 或任何 Web 服务将用户的 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 上的网站用户)成为此网站的网站集管理员吗?

非常感谢!

【问题讨论】:

    标签: sharepoint office365 onedrive


    【解决方案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

    【讨论】:

    • 非常感谢!我已经尝试过了,但是对于我的场景,它不起作用。我已经更新了我的问题,你能看看吗?
    猜你喜欢
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多