node.js - 为什么从 sharepoint siteusers api 或 clientPeoplePickerSearchUser api 获得的用户 ID 与 sharepoint Task AssignedToId 不同?
问题描述
我尝试使用 sharepoint rest api 创建任务,这样做我也尝试添加受让人,这是通过添加来完成的AssignedToId
。我使用用户信息 api 或 clientPeoplePickerSearchUser api 和站点用户 api 为特定用户获取的用户 ID(例如,使用 Id 28 检索的用户)不同于它想要的相同用户的 AssignedToId(它想要的 AssignedToId 是 14)。
我试过api用户信息api
GET
/_vti_bin/ListData.svc/UserInformationList?$filter=(substringof('" + params.searchKey + "',Name) and ContentType eq 'Person')
还有客户端PeoplePickerSearchUser
POST /_api/SP.UI.ApplicationPages.ClientPeoplePickerWebServiceInterface.clientPeoplePickerSearchUser
var data = {
queryParams: {
AllowEmailAddresses: true,
AllowMultipleEntities: false,
AllUrlZones: false,
MaximumEntitySuggestions: 50,
PrincipalSource: 15,
PrincipalType: 15,
QueryString: params.searchKey,
Required: false,
UrlZoneSpecified: false
}
}
let users = JSON.parse(createTaskResponse.data.d.ClientPeoplePickerSearchUser)
// return users
let userUrl = this.userProvider.resource + "/_api/web/siteusers?"
let promises = []
for(let user of users) {
let actualUrl = userUrl + "Title eq " + user.DisplayText
console.log('user is: ', user.DisplayText)
promises.push(axios.get(actualUrl, {
headers: headers
}))
}
解决方案
所以我的方法的问题是sharepoint在基本域/站点和子站点之间具有不同的用户ID,因此您希望在访问sharepoint用户时使用实际站点url而不是基本sharepoint url。
推荐阅读
- sql - 两个查询之间的区别
- javascript - 将 HMR Create-React-app 设置为在 nginx 反向代理后面运行的最简单配置是什么?
- postgresql - PostgreSQL 数据库应该需要用户密码才能访问,但不需要
- c# - 如何使用 Identity Server 4 为给定用户撤销 ASP.NET Core API 中的访问令牌
- batch-file - 根据文件中的行创建文件夹
- python - Python打破了一个while循环
- ios - 比较两个数组,其中一个具有重复项
- java - 具有字符串表示的对象数组 (Java)
- string - 为什么 Dart 中的字符串声明是大写的?
- typescript - Typescript 中的强类型转换