Не удается обновить свойство Skills пользователя через MS Graph API - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь обновить свойство «Навыки» пользователя (примечание: НЕ использую конечную точку Me). Это возвращает исключение. Я использую. NET SDK GraphServiceClient для этого, используя последнюю версию 3.6.0.

Воспроизвести

Шаги для воспроизведения поведения используйте следующий пример кода:

var user = new User()
{
  Skills = skills
};
await graphClient.Users[userId].Request().UpdateAsync(user);

Ожидаемое поведение

Я ожидаю, что этот код отправит запрос POST в конечную точку Graph API, и этот запрос должен обновите свойство Skills данного используемого объекта, при условии, что аутентифицированной службе предоставлено разрешение User.ReadWrite.All в Azure AD (которое у нее есть).

Вместо этого Graph возвращает следующую ошибку конечная точка:

  "error": {
    "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException",
    "message": "A type named 'Microsoft.SharePoint.user' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
    "innerError": {
      "request-id": "1948a4ec-60fd-4212-873f-3d34f62f5601",
      "date": "2020-05-25T09:35:33"
    }
  }
}

Не уверен, почему это не сработает. Я следил за примерами, хотя в них конкретно не упоминается обновление свойства Skills, можно ожидать, что это будет работать одинаково для всех свойств. Когда я опускаю свойство в обновленном объекте User, я не получаю взамен сообщение об ошибке (но, очевидно, в этом случае ничего не обновляется).

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

До тех пор, пока это не будет исправлено в v1, как упомянуто baywet, вы также можете использовать следующее в качестве обходного пути для вашего сценария.

Клиент Graph по умолчанию добавляет odata.type как microsoft.graph.user, а sharepoint не ' Не ожидаю этого значения. Вы можете изменить oDataType на «https://graph.microsoft.com/v1.0/ $ metadata # users / $ entity» или «Microsoft.SharePoint.user» или null, чтобы sharepoint мог понимать тип.

Вы можно установить oDatatype на

var user = new User()
{
  Skills = skills
};
user.ODataType = "https://graph.microsoft.com/v1.0/$metadata#users/$entity";
await graphClient.Users[userId].Request().UpdateAsync(user);
0 голосов
/ 25 мая 2020

Это постоянная проблема, которую решает служба. Бета-версия уже должна быть исправлена, а v1 находится в стадии разработки.

В качестве обходного пути вы можете использовать бета-версию или обработать запрос вручную без типа odata.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...