Работа с профилями пользователей в клиенте с поддержкой нескольких регионов
В клиенте с поддержкой нескольких регионов можно определить предпочтительное расположение данных для пользователя, определить расположение профиля пользователя и URL-адрес личного сайта, а также прочитать и обновить свойства профиля пользователя по умолчанию и настраиваемые свойства профиля пользователя.
Определение предпочтительного расположения данных
В клиенте с несколькими регионами пользователи SharePoint охватывают различные географические расположения; например, некоторые пользователи находятся в Северная Америка, некоторые находятся в Европе и т. д. Эта модель также применяется к учетным записям пользователей и личным (OneDrive для бизнеса) сайтам.
В идеале пользователи и их учетные записи пользователей и сайты находятся в одном географическом расположении. Чтобы убедиться в этом, перед созданием личных сайтов задайте для предпочтительного расположения данных пользователя его географическое расположение.
В примере, показанном на следующем рисунке, пользователь vesa@contoso.onmicrosoft.com живет в Европе и имеет предпочтительное расположение данных, для которого задано значение EUR. Таким образом:
- Копия профиля пользователя по умолчанию находится в географическом расположении Европы.
- Личный сайт пользователя создается в географическом расположении Европы.
Для пользователя bert@contoso.onmicrosoft.com для предпочтительного расположения данных задано значение NAM. Поскольку у него был личный сайт, размещенный в Европе до того, как было установлено его предпочтительное расположение данных, его профиль остается в Европе.
Профили пользователей и личные сайты находятся в одном географическом расположении. Для пользователей, у которых нет личного сайта:
- Если они задают предпочтительное расположение данных, их профиль находится в этом географическом расположении.
- Если они не задали предпочтительное расположение данных, их профиль находится в географическом расположении по умолчанию.
Обнаружение расположения профиля пользователя и URL-адреса личного сайта
Чтобы программно обнаружить расположение профиля пользователя, можно выполнить одно из следующих действий:
- Используйте API профиля пользователя SharePoint. Мы рекомендуем этот подход, так как он работает во всех сценариях.
- Используйте Microsoft Graph. Это работает для пользователей, у которых также есть личные сайты, но не для пользователей, у которых нет личных сайтов.
Использование API профиля пользователя SharePoint для определения расположения профиля
Вы можете вызвать API профиля пользователя SharePoint через REST или CSOM, чтобы получить URL-адрес узла личного сайта для данной учетной записи. Этот URL-адрес содержит узел личного сайта для личного сайта пользователя независимо от того, был ли создан личный сайт. В следующем примере показан вызов REST.
GET https://contoso.sharepoint.com/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)/personalsitehosturl?%40v=%27i%3A0%23.f%7Cmembership%7Cbert%40contoso.onmicrosoft.com%27
Если вы используете C#, CSOM проще использовать, как показано в следующем примере.
public string GetUserPersonalSiteHostUrlCSOM(string userPrincipalName)
{
string result = null;
PeopleManager peopleManager = new PeopleManager(this.clientContext);
var userProperties = peopleManager.GetPropertiesFor($"i:0#.f|membership|{userPrincipalName}");
this.clientContext.Load(userProperties);
this.clientContext.ExecuteQuery();
result = userProperties.PersonalSiteHostUrl;
return result;
}
Если у вас есть URL-адрес узла личного сайта, его можно использовать вместе со сведениями об обнаружении нескольких регионов, чтобы получить URL-адрес сайта администратора клиента для географического расположения, в котором размещен профиль пользователя.
Дополнительные сведения см. в примере MultiGeo.UserProfileUpdates .
Использование Microsoft Graph для обнаружения URL-адреса личного сайта пользователя
Чтобы найти URL-адрес личного сайта пользователя в клиенте с поддержкой нескольких регионов, можно использовать следующий вызов Microsoft Graph:
GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=mySite
Если у вас есть URL-адрес узла личного сайта, его можно использовать вместе со сведениями об обнаружении нескольких регионов, чтобы получить URL-адрес сайта администратора клиента для географического расположения, в котором размещен профиль пользователя.
Примечание.
Если у пользователя нет личного сайта, такой подход не будет работать. Вместо этого следует использовать API профиля пользователя SharePoint.
Дополнительные сведения см. в примере MultiGeo.UserProfileUpdates .
Обновление свойств профиля пользователя
Массовое обновление свойств профиля пользователей — это распространенный сценарий для корпоративных клиентов. Используемый процесс зависит от типа свойства профиля пользователя, которое требуется обновить.
Обновление свойств профиля пользователя по умолчанию
Некоторые свойства профиля пользователя доступны по умолчанию, например Department, AboutMe и PreferredDataLocation. Мы рекомендуем использовать microsoft API Graph для обновления этих свойств, так как Microsoft Graph геоинформационен.
В следующем примере показано, как обновить свойство AboutMe для пользователя bert@contoso.onmicrosoft.com.
GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=aboutme
Дополнительные сведения см. в примере MultiGeo.UserProfileUpdates .
Обновление свойства предпочтительного расположения данных
Предпочтительное расположение данных пользователя (свойство preferredDataLocation ) указывает предпочтительное географическое расположение пользователя. Это влияет на следующее:
- Географическое расположение, в котором подготовлен личный сайт пользователя.
- Географическое расположение, в котором создаются сайты групп пользователя
Так как предпочтительное расположение данных является свойством по умолчанию, рекомендуется использовать для его настройки API Graph Майкрософт, как показано в следующем примере.
GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=preferredDataLocation
PATCH https://graph.microsoft.com/beta/users/bert@contoso.onmicrosoft.com
JSON payload:
{
"preferredDataLocation" : "eur"
}
Дополнительные сведения см. в примере MultiGeo.UserPreferredDataLocation .
Добавление настраиваемых свойств профиля пользователя SharePoint
Вы можете добавить свойства профиля пользователя для конкретной компании в профили пользователей в SharePoint. Для клиентов SharePoint с поддержкой нескольких регионов применяются следующие рекомендации.
- Настраиваемые свойства профиля пользователя создаются на уровне географического расположения. Если вы создаете свойство в географическом расположении Европы, оно недоступно в других географических расположениях. Рекомендуется создавать настраиваемые свойства профилей пользователей во всех географических расположениях. Это снижает риск потери данных при перемещении пользователя между географическими расположениями.
- Необходимо прочитать и обновить свойства пользовательского профиля на уровне географического расположения. Если вы создали пользовательское свойство во всех географических расположениях, необходимо выполнить итерацию по географическим расположениям и обновить свойство для всех пользователей.
Примечание.
Чтобы пользовательское свойство профиля отображалось для пользователя в результатах поиска людей, свойство должно быть создано и задано по крайней мере в расположении профиля пользователя. Например, для пользователя с профилем, расположенным в NAM, пользовательское свойство должно быть задано по крайней мере в географическом расположении NAM, чтобы отображаться в результатах поиска людей; Для пользователя с профилем, расположенным в eur, пользовательское свойство должно быть задано по крайней мере в EUR.
// For SharePoint Online custom properties, use the following approach.
string userPrincipalName = "bert@contoso.onmicrosoft.com";
string userAccountName = $"i:0#.f|membership|{userPrincipalName}";
PeopleManager peopleManager = new PeopleManager(tenantAdminContext);
var propsToRetrieve = new string[] { "CostCenter", "CustomProperty" };
var props = peopleManager.GetUserProfilePropertiesFor(new UserProfilePropertiesForUser(tenantAdminContext, userAccountName, propsToRetrieve));
tenantAdminContext.ExecuteQuery();
int i = 0;
foreach (var prop in props)
{
Console.WriteLine($"Prop: {propsToRetrieve[i]} Value: {prop}");
i++;
}
// Update user profile properties
peopleManager.SetSingleValueProfileProperty(userAccountName, "CostCenter", "89786879");
tenantAdminContext.ExecuteQuery();
Дополнительные сведения см. в примере MultiGeo.UserProfileUpdates .
Использование API массового обновления профиля пользователей
API массового обновления профиля пользователя можно использовать для массового обновления свойств пользовательских профилей в клиенте с несколькими регионами. Обратите внимание на следующее:
- Этот API работает на уровне географического расположения и не поддерживает несколько регионов. Например, если вы используете API в географическом расположении в Европе, обновляются только учетные записи в Европе.
- Если указать файл импорта с учетными записями в разных географических расположениях, API обновляет свойства только для пользователей в этом географическом расположении.