首页 > 解决方案 > 为什么从 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
                }))
            }

标签: node.jssharepoint-rest-api

解决方案


所以我的方法的问题是sharepoint在基本域/站点和子站点之间具有不同的用户ID,因此您希望在访问sharepoint用户时使用实际站点url而不是基本sharepoint url。


推荐阅读