Невозможно создать событие с расширенными данными

Я пытаюсь создать событие календаря с расширенными данными с помощью Microsoft Graph API. (На самом деле я пытаюсь преобразовать существующее открытое расширение в расширение схемы, так как я не мог отфильтровать расширенное значение без идентификатора открытого расширения.)

Перед попыткой я уже успешно создал мое расширение схемы и создал событие календаря с расширение схемы отвечает кодом ошибки BadRequest, а запросы сообщений должны содержать исключительно изменения расширения.

Я попытался сделать это, следуя документ.

POST https://graph.microsoft.com/v1.0/me/calendars/{calendar-group-id}/events

{
  "subject": "schema extension test",
  "body": {
    "contentType": "HTML",
    "content": "schema extension test"
  },
  "start": {
      "dateTime": "2021-01-22T12:00:00",
      "timeZone": "Eastern Standard Time"
  },
  "end": {
      "dateTime": "2021-01-23T14:00:00",
      "timeZone": "Eastern Standard Time"
  },
  "attendees": [],
  "extendedData": {
      "courseId": "11",
      "materialId": "22",
      "courseType": "video"
  }
}

response: 
{
    "error": {
        "code": "BadRequest",
        "message": "Requests must contain extension changes exclusively.",
        "innerError": {
            ...
        }
    }
}

Без extendedData создание успешных ответов на событие и после создания события, если я patch событие только с extendedData, оно отвечает с ошибкой. Тип с именем «Microsoft.OutlookServices.OpenTypeExtension» не может быть разрешен моделью. Когда модель доступна, каждое имя типа должно соответствовать допустимому типу.

PATCH https://graph.microsoft.com/v1.0/me/calendars/{calendar-group-id}/events/{event-id}
    
    {
      "extendedData": {
          "courseId": "11",
          "materialId": "22",
          "courseType": "video"
      }
    }

response:
{
    "error": {
        "code": "RequestBodyRead",
        "message": "A type named 'Microsoft.OutlookServices.OpenTypeExtension' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
        "innerError": {
            ...
        }
    }
}

Мне удалось добиться успеха, когда я использовал проводник Graph API с авторизованным пользователем с разрешения Calendars.Read согласия.

Но если я попробую то же самое в почтальоне, это не сработает.

Я уже предоставил все разрешения календаря, включая делегированные разрешения и разрешения приложений в Azure. введите описание изображения здесь


person hotcakedev    schedule 07.01.2021    source источник


Ответы (1)


Это потому, что имя вашего расширения схемы не extendedData.

Когда вы используете POST https://graph.microsoft.com/v1.0/schemaExtensions для создания расширения для типа события, к настоящему имени будет добавлен префикс.

Нравится:

введите описание изображения здесь

И на основе этого известная проблема Microsoft Graph:

Вы не можете указать расширение схемы в той же операции, что и создание экземпляра контакта, события, сообщения или публикации. Сначала необходимо создать экземпляр ресурса, а затем выполнить PATCH для этого экземпляра, чтобы добавить расширение схемы и пользовательские данные.

Итак, нам нужно сначала создать событие, а затем обновить его.

При обновлении события нам нужно указать настоящее имя расширения:

введите описание изображения здесь

person Allen Wu    schedule 08.01.2021
comment
Привет, @Allen Wu. На самом деле я назвал расширение схемы contoso_extendedData. Вы знаете, что это {мое настоящее доменное имя} _ {schemaName}. Поэтому, если я запрошу GET /schemaExtensions/contoso_extendedData, он ответит правильным расширением. - person hotcakedev; 08.01.2021
comment
И похоже, что я не могу использовать $filter для свойств расширения, даже если мне удалось создать события с расширенными данными, верно? обратитесь к это с помощью моего Graph API. - person hotcakedev; 08.01.2021
comment
Вы можете ПАТЧИРОВАТЬ событие в Graph Explorer, но не в Postman? Используете тот же запрос? - person Allen Wu; 11.01.2021
comment
@hotcakedev Извините, забыл @ you :(. Вы можете ответить на вопросы выше? - person Allen Wu; 13.01.2021
comment
Да исправить. После предоставления разрешений в Graph Explorer не было ошибок при исправлении события с расширением схемы. Но после установки патча получить событие с расширением схемы не удалось. - person hotcakedev; 13.01.2021
comment
@hotcakedev Один и тот же запрос дает разные результаты. Единственное, о чем я могу думать, это токен доступа. Сравните декодированные результаты 2 токена доступа в jwt.io. - person Allen Wu; 13.01.2021
comment
Я уже пытался сравнить 2 токена доступа, они не совпадают и имеют разные разрешения. Но я думаю, что установил все правильные разрешения. Calendar.ReadWrite разрешение получено, не уверен, почему оно не работает. - person hotcakedev; 13.01.2021
comment
@hotcakedev Попробуйте использовать токен доступа в Graph explorer для исправления события в Postman. - person Allen Wu; 13.01.2021
comment
Я уверен, что это сработает. Но я должен использовать автоматически сгенерированный токен доступа, а не ручной. - person hotcakedev; 13.01.2021
comment
@hotcakedev Да. Я просто хочу знать, является ли причина II токеном доступа. Если токен доступа из Graph Explorer может работать в Postman, токен доступа, полученный от Postman, должен быть неверным. Расскажите, пожалуйста, как вы его получили в Postman. Приветствуется предоставление скриншота. - person Allen Wu; 14.01.2021
comment
Благодарю за ваш ответ. Но я думаю, что это бесполезно, потому что я должен фильтровать значение конкретного расширенного свойства после создания события с расширенными данными, которые мне нужны. Я уже упоминал об этом. Я не могу использовать $ filter для свойств расширения для типов событий, верно? - person hotcakedev; 14.01.2021
comment
@hotcakedev Да. Мы не можем использовать $filter для свойств расширения для типов событий. - person Allen Wu; 14.01.2021