Надстройка SharePoint, считывающая или обновляющая свойства профиля пользователя
В примере UserProfile.Manipulation.CSOM показано, как считывать и обновлять свойства профиля определенного пользователя. В этом примере используется надстройка, размещенная у поставщика услуг, чтобы:
- считывать и отображать все свойства профиля пользователя;
- обновлять однозначное свойство профиля пользователя;
- обновлять многозначное свойство профиля пользователя.
Используйте это решение, если вы хотите:
- прочитать или записать данные свойства профиля пользователя;
- использовать значения свойств профиля пользователя для персонализации SharePoint.
Примечание.
Этот пример кода запускается только в Office 365.
До начала работы
Чтобы приступить к работе, скачайте пример надстройки UserProfile.Manipulation.CSOM из проекта Office 365 Developer patterns and practices (Шаблоны и методики разработки для Office 365) на портале GitHub.
Примечание.
Код, приведенный в этой статье, предоставляется "как есть" без какой-либо явной или подразумеваемой гарантии, включая подразумеваемые гарантии пригодности для какой-либо цели, для продажи или гарантии отсутствия нарушения прав иных правообладателей.
Перед запуском сценария 1
В верхней части сайта Office 365 выберите изображение своего профиля и щелкните Обо мне.
На странице Обо мне выберите пункт изменить профиль.
В разделе Обо мне введите Я работаю в Contoso.
Нажмите кнопку Сохранить все и закрыть.
Перед запуском сценария 3
- В верхней части своего сайта выберите изображение своего профиля и щелкните Обо мне.
- На странице Обо мне выберите пункт изменить профиль.
- В разделе Изменить сведения выберите Сведения.
- В разделе Навыки введите C#, JavaScript.
- Нажмите кнопку Сохранить все и закрыть.
Использование примера надстройки UserProfile.Manipulation.CSOM
При запуске этого примера запускается надстройка, размещенная у поставщика, как показано на рисунке ниже.
Этот пример кода включает три сценария.
Сценарий | Демонстрируемые возможности |
---|---|
1 | Чтение всех свойств профиля пользователя, запустившего приложение. |
2* | Обновление однозначного свойства профиля пользователя. |
3* | обновлять многозначное свойство профиля пользователя. |
Примечание.
Этот сценарий поддерживается только в Microsoft 365.
Сценарий 1. Чтение всех свойств профиля пользователя
Если выбран параметр Запустить сценарий 1, надстройка считывает все свойства профиля текущего пользователя и отображает данные профиля пользователя в разделе Свойства профиля текущего пользователя, как показано на рисунке ниже.
Выбор параметра Запустить сценарий 1 вызывает метод btnScenario1_Click в файле CodeSample1.aspx.cs для выполнения указанных ниже задач:
- Использование объекта PeopleManager для получения всех свойств профиля текущего пользователя.
- Выполнение итерации в объекте PersonProperties.UserProfileProperties для перечисления значений свойств профиля пользователя в текстовом поле.
protected void btnScenario1_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Get the people manager instance and load current properties.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties);
clientContext.ExecuteQuery();
// Output user profile properties to a text box.
txtProperties.Text = "";
foreach (var item in personProperties.UserProfileProperties)
{
txtProperties.Text += string.Format("{0} - {1}{2}", item.Key, item.Value, Environment.NewLine);
}
}
}
Сценарий 2. Обновление однозначного свойства профиля пользователя
В сценарии 2 показано, как обновить однозначное свойство профиля пользователя. Как показано на рисунке ниже, текущее значение свойства Обо мне в профиле пользователя, использующего эту надстройку, соответствует значению Я работаю в Contoso.
Чтобы обновить значение свойства Обо мне в профиле пользователя, в поле Новое значение "Обо мне" введите Я инженер-программист в Contoso и нажмите кнопку Запустить сценарий 2. Код обновляет свойство Обо мне с присвоением значения Я инженер-программист в Contoso.
Как показано на рисунке ниже, надстройка обновляет параметр Текущее значение "Обо мне" с использованием нового значения свойства Обо мне в профиле пользователя.
Выбор параметра Запустить сценарий 2 вызывает метод btnScenario2_Click в файле CodeSample2.aspx.cs для выполнения указанных ниже задач:
- Использование объекта PeopleManager для получения свойств профиля текущего пользователя.
- Преобразование текста, введенного пользователем, в формат HTML.
- Обновление значения свойства AboutMe в профиле пользователя с помощью функции SetSingleValueProfileProperty, использующей три параметра:
- Имя учетной записи пользователя, профиль которого обновляется.
- Имя свойства профиля пользователя (AboutMe в этом сценарии).
- Значение свойства в формате HTML (Я инженер-программист в Contoso в этом сценарии).
protected void btnScenario2_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Get the people manager instance and initialize the account name.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties, p => p.AccountName);
clientContext.ExecuteQuery();
// Convert entry to HTML.
string updatedValue = (txtAboutMe.Text).Replace(Environment.NewLine, "");
// Update the AboutMe property for the user using account name from the user profile.
peopleManager.SetSingleValueProfileProperty(personProperties.AccountName, "AboutMe", updatedValue);
clientContext.ExecuteQuery();
}
}
Примечание.
Если используются настраиваемые свойства профиля пользователя, настройте свойство с возможностью изменения пользователями. Способ, используемый в этом сценарии, поддерживается для настраиваемых свойств профиля пользователя.
Сценарий 3. Обновление многозначного свойства профиля пользователя
В сценарии 3 показано, как обновить многозначное свойство профиля пользователя. На рисунке ниже показана начальная страница для сценария 3. Текущее значение "Навыки" отображает навыки пользователя, использующего приложение. Навыки считываются из свойства SPS-Skills профиля пользователя.
Чтобы добавить новые навыки в свойство SPS-Skills профиля пользователя из этой надстройки:
- Введите "HTML5" и нажмите кнопку Добавить навык.
- Введите ASP.NET, а затем выберите Добавить навык.
- Нажмите кнопку Запустить сценарий 3.
- Убедитесь, что в разделе Текущее значение "Навыки" отображается новый список навыков пользователя.
- Убедитесь, что свойство SPS-Skills профиля пользователя теперь отображает новый список навыков.
Выбор варианта Запустить сценарий 3 вызывает метод btnScenario3_Click в файле CodeSample3.aspx.cs для выполнения указанных ниже задач:
- Использование объекта PeopleManager для получения свойств профиля текущего пользователя.
- Чтение списка навыков, отображаемых в списке.
- Сохранение новых навыков в свойстве SPS-Skills профиля пользователя с помощью функции SetMultiValuedProfileProperty, использующей три параметра:
- Имя учетной записи пользователя, профиль которого обновляется.
- Имя свойства профиля пользователя. Это SPS-Skills.
- Значения свойств как список строковых объектов.
protected void btnScenario3_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Get the people manager instance and initialize the account name.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties, p => p.AccountName);
clientContext.ExecuteQuery();
// Collect the user's skills from the list box in order to update the user's profile.
List<string> skills = new List<string>();
for (int i = 0; i < lstSkills.Items.Count; i++)
{
skills.Add(lstSkills.Items[i].Value);
}
// Update the SPS-Skills property for the user using account name from the user's profile.
peopleManager.SetMultiValuedProfileProperty(personProperties.AccountName, "SPS-Skills", skills);
clientContext.ExecuteQuery();
// Refresh the values.
RefreshUIValues();
}
}