Уведомление для lifecycleEvent «subscriptionRemoved» не вызывается при смене пароля в Microsoft Graph API - PullRequest
0 голосов
/ 17 октября 2019

Я использую Microsoft Graph API для подписки на уведомления о событиях календаря через Node. После прочтения документации по рекомендациям для Сокращение недостающих подписок и уведомлений для ресурсов Outlook (предварительный просмотр) , он сообщает, что:

Некоторые события в Outlook могут привести к удалению подписки,Эти события включают в себя:

  • Пароль пользователя был сброшен
  • Устройство пользователя не соответствует требованиям
  • Учетная запись пользователя была аннулирована

Когда такое событие происходит, Outlook отправляет специальное уведомление о жизненном цикле subscriptionRemoved.

Outlook также отправляет другое уведомление о жизненном цикле, пропущенное, если уведомление не может быть доставлено приложению.

Приложение, подписавшееся наУведомления для ресурсов Outlook, таких как сообщения и события, должны прослушивать subscriptionRemoved и пропущенные сигналы:

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

Чтобы получать уведомления о жизненном цикле, вы можете использовать существующую конечную точку messagesUrl, которая уже получает уведомления о ресурсах, или вы можете зарегистрировать отдельный lifecycleNotificationUrl для получения subscriptionRemoved и пропущенных уведомлений в отдельной конечной точке.

После того, как я подписался на события календаря пользователя, я получаю уведомления об изменениях без каких-либо проблем, но если я изменяю пароль пользователя, я должен получить уведомление lifecycleEvent subscriptionRemoved, как сказано выше;однако после изменения пароля примерно 30 раз я так и не получил уведомление. В чем может быть проблема здесь? Я не смог найти больше информации о том, как вызвать уведомление.

Если это поможет, я подписываюсь на ресурс me/events с changeType: "created,updated,deleted".

  const subscriptionOptions = {
    changeType: 'created,updated,deleted',
    notificationUrl: `node-service-url/outlook-events/${userId}`,
    resource: 'me/events',
    expirationDateTime: 'someExpirationDateTime',
    clientState: 'someClientState'
  }

  const subscription = await client
    .api('/subscriptions')
    .post(subscriptionOptions)
...