Поделиться через


Надстройка SharePoint, считывающая или обновляющая свойства профиля пользователя

В примере UserProfile.Manipulation.CSOM показано, как считывать и обновлять свойства профиля определенного пользователя. В этом примере используется надстройка, размещенная у поставщика услуг, чтобы:

  • считывать и отображать все свойства профиля пользователя;
  • обновлять однозначное свойство профиля пользователя;
  • обновлять многозначное свойство профиля пользователя.

Используйте это решение, если вы хотите:

  • прочитать или записать данные свойства профиля пользователя;
  • использовать значения свойств профиля пользователя для персонализации SharePoint.

Примечание.

Этот пример кода запускается только в Office 365.

До начала работы

Чтобы приступить к работе, скачайте пример надстройки UserProfile.Manipulation.CSOM из проекта Office 365 Developer patterns and practices (Шаблоны и методики разработки для Office 365) на портале GitHub.

Примечание.

Код, приведенный в этой статье, предоставляется "как есть" без какой-либо явной или подразумеваемой гарантии, включая подразумеваемые гарантии пригодности для какой-либо цели, для продажи или гарантии отсутствия нарушения прав иных правообладателей.

Перед запуском сценария 1

  1. В верхней части сайта Office 365 выберите изображение своего профиля и щелкните Обо мне.

    Снимок экрана: страница профиля пользователя с выделенным элементом

  2. На странице Обо мне выберите пункт изменить профиль.

  3. В разделе Обо мне введите Я работаю в Contoso.

  4. Нажмите кнопку Сохранить все и закрыть.

Перед запуском сценария 3

  1. В верхней части своего сайта выберите изображение своего профиля и щелкните Обо мне.
  2. На странице Обо мне выберите пункт изменить профиль.
  3. В разделе Изменить сведения выберите Сведения.
  4. В разделе Навыки введите C#, JavaScript.
  5. Нажмите кнопку Сохранить все и закрыть.

Использование примера надстройки UserProfile.Manipulation.CSOM

При запуске этого примера запускается надстройка, размещенная у поставщика, как показано на рисунке ниже.

Снимок экрана: начальная страница приложения 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.

Снимок экрана: начальная страница сценария 2

Чтобы обновить значение свойства Обо мне в профиле пользователя, в поле Новое значение "Обо мне" введите Я инженер-программист в 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 профиля пользователя.

Снимок экрана: начальная страница сценария 3

Чтобы добавить новые навыки в свойство SPS-Skills профиля пользователя из этой надстройки:

  1. Введите "HTML5" и нажмите кнопку Добавить навык.
  2. Введите ASP.NET, а затем выберите Добавить навык.
  3. Нажмите кнопку Запустить сценарий 3.
  4. Убедитесь, что в разделе Текущее значение "Навыки" отображается новый список навыков пользователя.
  5. Убедитесь, что свойство 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();
  }
}

См. также