我需要通过电子邮件地址,个人资料图片以及可能的电话号码获取用户列表。
最佳选择是将Lists.GetListItemChangesSinceToken
请求作为其中一部分,或者在其后面添加一个帐户名称/电子邮件列表的请求。
我尝试了什么:
<ExpandUserField>TRUE</ExpandUserField>
作为Lists.GetListItemChangesSinceToken
的一部分我只获得了一些额外的数据:ows_Author="1;#Admin AdminName,#login\name,#emailaddress,#sipaddress,#Admin AdminName"
没有找到任何其他方法来扩展作者字段。使用搜索API,我可以通过查询得到一个专业用户:
_api/search/query?sourceid='b09a7990-05ea-4af9-81ef-edfab16c4e31'&querytext='accountname:i:0#.f|membership|admin@company.com'
我尝试了很多方法来获得多个用户,但我不能:
querytext='accountname:or(i:0#.f|membership|admin@company.com i:0#.f|membership|admin2@company.com)'
querytext='accountname:any("i:0#.f|membership|admin@company.com", "i:0#.f|membership|admin2@company.com")'
querytext='accountname:or(i:0#.f|membership|admin@company.com i:0#.f|membership|admin2@company.com)'&enablefql=true
querytext='accountname:or(i:0#.f|membership|admin@company.com i:0#.f|membership|admin2@company.com)'&enablefql=true&enablequeryrules=true
使用带有过滤器的rest api /_api/web/siteusers
我有几个用户但它返回的数据不够。没有电话号码或个人资料照片。
谢谢你的帮助。
答案 0 :(得分:0)
看起来你在网络服务中找到了答案,但这里有一种替代方法(基于之前的项目在记事本中快速组合在一起,所以可能需要一些改进,但它应该给你一般的想法):
var siteName = "";
using (var site = new SPSite(siteName))
{
using (var web = site.OpenWeb())
{
var serviceContext = SPServiceContext.GetContext(site);
var userProfileManager = new UserProfileManager(serviceContext);
var profiles = new List<SPUsersEntity>();
foreach (UserProfile profile in userProfileManager)
{
profiles.Add(LoadItems( profile.DisplayName,
profile.AccountName,
Convert.ToString(currentProfile[PropertyConstants.Title].Value),
Convert.ToString(currentProfile[PropertyConstants.Department].Value),
Convert.ToString(currentProfile[PropertyConstants.PictureUrl].Value),
Convert.ToString(currentProfile[PropertyConstants.Manager].Value),
Convert.ToString(currentProfile[PropertyConstants.SPSDepartment].Value),
Convert.ToString(currentProfile[PropertyConstants.WorkEmail].Value) ,
Convert.ToString(currentProfile[PropertyConstants.WorkPhone].Value)));
}
}
}
public SPUsersEntity LoadItems(string name, string username, string title, string department, string pictureURL, string manager, string team, string email, string phone)
{
var usersEntity = new SPUsersEntity
{
Name = name ,
Username = username ,
Title = title ,
Department = department ,
Picture = pictureURL ,
Manager = manager ,
Team = team ,
Email = email ,
WorkPhone = phone
};
return usersEntity;
}
public class SPUsersEntity
{
public string Id { get; set; }
public string Name { get; set; }
public string Username { get; set; }
public string Manager { get; set; }
public string Picture { get; set; }
public string WorkPhone { get; set; }
public DateTime HireDate { get; set; }
public DateTime Birthday { get; set; }
public string Title { get; set; }
public string Department { get; set; }
public string Team { get; set; }
public string Email { get; set; }
}
答案 1 :(得分:0)
好的,所以我尝试了很多选项,完全错过了正确的选择:
_api/search/query?
sourceid='b09a7990-05ea-4af9-81ef-edfab16c4e31'&
querytext='accountname:i:0#.f|membership|admin@company.com accountname:i:0#.f|membership|admin2@company.com'