SharePoint客户端对象模型中EnsureUser的替代方法

时间:2014-02-15 03:52:12

标签: sharepoint-2010 client-object-model

我需要使用客户端对象模型在SharePoint 2010中获取用户的LookUpId。我能够使用EnsureUser方法获取它,但是如果该用户不可用于该站点,则此方法会将用户添加到SharePoint网站。我的要求是在不将用户添加到SharePoint的情况下获取LookupId 是否有另一种方法可以在不使用EnsureUser方法的情况下获取LookupId? 如果没有,在使用EnsureUser方法获取LookupId之后,我们可以从SharePoint站点中删除用户吗?

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

Web.SiteUserInfoList Property获取包含该网站的网站集的UserInfo列表。

以下代码演示了如何通过userName获取userInfo(包括userId属性):

function getUserInfo(userName,Success,Error)
{
   var context = new SP.ClientContext.get_current();
   var userInfoList = context.get_web().get_siteUserInfoList();
   var query = new SP.CamlQuery();
   var viewXml = "<View> \
                    <Query> \
                       <Where> \
                           <Eq><FieldRef Name='UserName' /><Value Type='Text'>" + userName + "</Value></Eq> \
                       </Where>  \
                    </Query> \
                    <RowLimit>1</RowLimit> \
                  </View>";
   query.set_viewXml(viewXml);
   var items = userInfoList.getItems(query);
   context.load(items,'Include(Deleted,Department,EMail,FirstName,ID,IsActive,IsSiteAdmin,JobTitle,LastName,MobilePhone,Name,Notes,Office,Picture,SipAddress,UserName,WebSite,WorkPhone)');
   context.executeQueryAsync(function(){
       if(items.get_count() > 0) {
          var item = items.itemAt(0);
          Success(item.get_fieldValues());
       }
       else {
          Success(null);
       }   
     },
     Error
   );
}




//Usage
getUserInfo('username@tenant.onmicrosoft.com',function(userInfo){
       console.log('User Id: ' + userInfo.ID);
    },
    function(sender,args){
       console.log(args.get_message());
});