通过 REST 确保用户 API

EnsureUser via REST API

我正在尝试确保一些用户并进入 post 500(内部服务器错误)。

  function ensureUser(webUrl,loginName)
{
   var data = { 'logonName': loginName }; 
   return $.ajax({
      url: webUrl + "/_api/web/siteusers",
      type: "POST",      
      data: JSON.stringify(data),
      headers: {
         "X-RequestDigest": $("#__REQUESTDIGEST").val(),
         "Accept": "application/json;odata=verbose",
     "Content-Type": "application/json;odata=verbose"
      }
   });  
}

var loginName = 'i:0#.w|nsm\eilonte'
ensureUser(_spPageContextInfo.webAbsoluteUrl,loginName)
.done(function(data)
{
    console.log('success');
})
.fail(function(error){
    console.log(error);
});

这是错误:

jquery-1.12.4.js:10254 POST http://blabla/_api/web/ensureuser 500 (Internal Server Error)
send    @   jquery-1.12.4.js:10254
ajax    @   jquery-1.12.4.js:9738
ensureUser  @   VM2574:4
(anonymous) @   VM2574:17

无法确定问题所在。

您发送的用户名不是 JSON。将 "Content-Type" header 更改为:

"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"

另外我认为API端点是

_api/web/ensureuser

尝试使用以下代码来确保用户。

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"
  }
});  
}
var loginName = 'emailid'
ensureUser(_spPageContextInfo.webAbsoluteUrl,loginName)
.done(function(data)
{
 console.log('User has been added');
})
.fail(function(error){
console.log('An error occured while adding user');
 });