Я пытаюсь использовать API создания подписки, чтобы открыть канал подписки на события календаря, чтобы мы могли получать обновления, когда интервьюеры отвечают на интервью.
Я пробовал много вариантов, чтобы получить этот запросработа:
Области разрешений
Я прошел процесс oauth, чтобы получить токены доступа к графу для пользователя со следующими областями разрешений:
Mail.Send
Calendars.ReadWrite.Shared
User.ReadBasic.All
Успешное создание события календаря
Использование токенов доступа с вышеуказанными областями перед попыткой создатьподписка, я добавляю событие с {eventId}
в общий календарь, скажем, с относительным идентификатором пользователя {sharedCalendarId}
.
Попытки создания подписки
Использованиеодни и те же токены доступа для создания того же заголовка авторизации с областями полномочий, перечисленными выше, я последовательно получаю один и тот же ответ ExtensionError
.Ниже я перечислю различные изменения запроса, которые я сделал в API графа.
Попытки URL-адресов
Я отправил каждую перестановку запросов POST подписки на следующиеURL:
Заголовки запроса
Content-Type: application/json
Authorization: Bearer {authToken}
Попытка запроса тела
changeType
и notificationUrl
и expirationDateTime
являютсяодинаково для всех запросов.Я попробовал 3 различных варианта строки resource
и попробовал запрос с и без clientState
.
Сначала я попробовал полностью идентифицированный ресурс и добавил clientState
:
{
"changeType": "created,updated",
"notificationUrl": "https://{domain-with-valid-https-certs}/calendar/microsoft/notifications",
"resource": "users/{userPrincipalName}/calendars/{sharedCalendarId}/events",
"clientState": "{thisIsLimitedTo128Characters}",
"expirationDateTime": "2018-05-23T21:02:45.487Z"
}
Затем я отказался от clientState
ради сужения проблемы и использовал me
вместо {userPrincipalName}:
{
...
"resource": "me/calendars/{sharedCalendarId}/events"
}
Затем я отказался от общего календаря, чтобы посмотреть,была проблема и использовался ресурс, который приведен в качестве примера в документации.
{
...
"resource": "me/events"
}
Получен ответ об ошибке
В то время как я, кажется, получаю запрос проверки к предоставленному notificationUrl
(и серверу)отвечает соответствующим образом) запрос на создание подписки затем отвечает следующим видом ошибки:
{
code: "ExtensionError",
message: "Operation: Create; Exception: [Status Code: Forbidden; Reason: Forbidden]",
innerError: {
"request-id": "0d86a983-ea50-4226-905c-38f0e8f12308",
date: "2018-05-23T03:55:38"
}
}
Что сбивает с толку, так это то, что я пытаюсь создать эту подписку в календаре, который я только что успешно создал или изменил, и событие,таким образом, 403
, похоже, не должен быть связан с доступом к ресурсу.
Существуют ли определенные разрешения или области, которые должнынам будет предоставлена возможность успешно создавать подписки на события календаря?Есть ли другой API, который мы должны использовать?