Я никогда не отвечал на свой вопрос, но мне удалось найти простое решение. Вот как я это сделал
- Когда пользователь вошел в систему, существует глобальная переменная JavaScript, которая включает идентификатор этого пользователя, - __spUserId
- Список профилей пользователей доступен через запрос CAML через SOAP, он называется «Список информации о пользователях».
- При доступе к этому списку вы должны установить сайт верхнего уровня так, чтобы он указывал на _catalogs вместо списков (или что бы то ни было). Вы делаете это, добавляя элемент _catalogs \
- Так как он обращается к списку профилей пользователей в виде списка, а не через функцию userprofile, установите тип запроса (?) На «GetListItems»
В целом, вот SOAP-вызов и CAML-запрос
$(document).ready(function() {
var soapEnv =
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
<soapenv:Body> \
<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
<listName>User Information List</listName> \
<topLevelSite>_catalogs</topLevelSite> \
<query> \
<Query> \
<Where> \
<Contains> \
<FieldRef Name='ID' /> \
<Value Type='Text'>"+_spUserId+"</Value> \
</Contains> \
</Where> \
</Query> \
</query> \
<viewFields> \
<ViewFields> \
<FieldRef Name='Name' /> \
<FieldRef Name='Department' /> \
<FieldRef Name='ID' /> \
</ViewFields> \
</viewFields> \
<query> \
<Query /> \
</query> \
</GetListItems> \
</soapenv:Body> \
</soapenv:Envelope>";
$.ajax({
url: "/_vti_bin/Lists.asmx",
type: "POST",
dataType: "xml",
data: soapEnv,
complete: processResult,
contentType: "text/xml; charset=\"utf-8\""
});
});