Sharepoint 2013:通过REST API确保用户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sharepoint 2013:通过REST API确保用户相关的知识,希望对你有一定的参考价值。

我正在尝试通过REST API自动确保一些用户。我的REST电话:

$.ajax({
url: "blablabla/_api/web/ensureuser",
type: "POST",
data: "{ 'logonName': 'i%3A0%23.w%7Cdomain%09logonName' }",
headers: {
    "X-RequestDigest": $("#__REQUESTDIGEST").val(),
    "accept": "application/json;odata=verbose"
},
success: function () {
    console.log("done!");
},
error: function (err) {
    console.log(JSON.stringify(err));
}
});

现在发送此调用时,我收到以下错误;

“错误请求:Microsoft.Data.OData.ODataContentTypeException找不到与响应的内容类型匹配的受支持的MIME类型。所支持的类型'application / json; odata = verbose'都不匹配内容类型' application / x-www-form-urlencoded; charset = UTF-8'“

该调用的构建方式与指定的in the msdn reference类似。

答案

发生此错误,因为需要明确指定ContentType,因为它是一个JSON请求:

contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8')

将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”

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 = 'i:0#.f|membership|jdoe@contoso.onmicrosoft.com'
ensureUser(_spPageContextInfo.webAbsoluteUrl,loginName)
.done(function(data)
{
    console.log('User has been added');
})
.fail(function(error){
    console.log('An error occured while adding user');
});
另一答案

替代解决方案:

您还可以通过以下方式执行REST查询:

        $.ajax({
        url: "http://[website]/_api/web/ensureuser('"+user_name+"')",
        type: "POST",
        headers: {             
            'accept': 'application/json;odata=verbose;charset=utf-8',
            'Content-Type': 'application/json;odata=verbose;charset=utf-8',
            'X-RequestDigest': $("#__REQUESTDIGEST").val()                    
        },
        success: function(response_data){ [your custom success action]
        },
        error: function(response_data){[your custom fail action]}
      });

var user_name将包含目标AD用户名。

注意:

  • 对AD用户使用ensureUser方法时,只需使用其用户名即可。因此,user_name将是这样的:“username”。无需在任何其他类型的前缀/后缀之前添加“domain ”。只是用户名
  • ContentType&accept标题必须是application / json; odata = verbose; charset = utf-8

以上是关于Sharepoint 2013:通过REST API确保用户的主要内容,如果未能解决你的问题,请参考以下文章

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

Sharepoint 2013:通过REST API确保用户

如何通过 REST API 在另一台服务器上为 Sharepoint 2013 和 Sharepoint Online 运行的脚本中更新 SharePoint 列表?

SharePoint 2013 - REST API about Content

text 更新项REST API调用SharePoint 2013

javascript 删除项REST API调用SharePoint 2013