使用 rest api 在 SharePoint 组中添加用户不起作用

Posted

技术标签:

【中文标题】使用 rest api 在 SharePoint 组中添加用户不起作用【英文标题】:Adding user in SharePoint group using rest api not working 【发布时间】:2021-10-19 12:00:22 【问题描述】:

这是我用来从 rest API 将用户添加到 SharePoint 组的代码

$.ajax(
  url: siteUrl + "/_api/web/sitegroups(" + groupid + ")/users",
  method: "POST",
  body: JSON.stringify(
    '__metadata': 
      'type': 'SP.User'
    ,
    'LoginName': uloginname
  ),
  headers: 
    "accept": "application/json; odata=verbose",
    "X-RequestDigest": $('#__REQUESTDIGEST').val(),
    "content-type": "application/json; odata=verbose",

  ,
  success: function(data) 
    $("#result").append("New User:<b>" + email + "</b> added successfully to,\n  SharePoint Group: " + groupname);
    $("#cont").hide();
    updateitem(id, email, "approve");
    
  ,
  error: function(err) 
   
    $("#result").append("error occured: " + JSON.stringify(err));
  
);

这是我收到的错误

发生错误:"readyState":4,"responseText":""error":"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message":"lang": "en-US","value":"在尝试读取条目的开头时,从 JSON 读取器读取了“EndOfInput”类型的节点。需要一个 'StartObject' 节点。"","re​​sponseJSON":"error":"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message":"lang": "en-US","value":"在尝试读取条目的开头时,从 JSON 读取器中读取了类型为 'EndOfInput' 的节点。需要一个 'StartObject' 节点。","status" :400,"statusText":"错误请求"

【问题讨论】:

【参考方案1】:

尝试将body: JSON.stringify() 替换为data: JSON.stringify()

【讨论】:

不起作用,当我将 "X-RequestDigest": $('#__REQUESTDIGEST').val(), 放在末尾而不是第二行时,它起作用了。但是,完全控制组中的所有用户都无法添加用户,他们都可以手动添加到站点,但是这段代码一直给他们这个错误。一旦网站集管理员能够。所有用户都拥有完全控制权并且是组中的所有者。不知道是什么问题。

以上是关于使用 rest api 在 SharePoint 组中添加用户不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint 2013 REST API AJAX 更新工作流任务

从sharepoint rest api下载文件时出现400错误

使用 REST API 查询 Sharepoint Online 并在正文中传递查询 (POST)

SharePoint REST Api过滤器的日期

Sharepoint 2013 通过 REST API:尝试创建项目时禁止出现错误 403

当文件名中有#符号时,Sharepoint REST API GetFileByServerRelativeUrl