【问题标题】:Notification for lifecycleEvent "subscriptionRemoved" not getting triggered by password change on Microsoft Graph APIMicrosoft Graph API 上的密码更改未触发生命周期事件“subscriptionRemoved”的通知
【发布时间】:2020-02-14 13:50:02
【问题描述】:

我正在使用 Microsoft Graph API 通过 Node.js 订阅日历事件的通知。在阅读Reduce missing subscriptions and notifications for Outlook resources (preview) 最佳实践的文档后,它说:

Outlook 中的某些事件可能会导致订阅被删除。 这些事件包括:

  • 用户密码已重置
  • 用户的设备不合规
  • 用户的帐户已被撤销

当此类事件发生时,Outlook 会发送一个特殊的生命周期 通知、订阅已移除。

Outlook 还会发送另一个生命周期通知,如果有 无法将通知发送到应用。

订阅 Outlook 资源通知的应用,例如 消息和事件,应该监听订阅已移除和错过 信号:

  • 收到订阅已移除通知后,应用程序应 重新创建订阅以保持连续流动。
  • 收到错过的通知后,应用程序应重新同步资源 使用 Microsoft Graph 的数据。

要接收生命周期通知,您 可以使用已经收到的现有 notificationUrl 端点 资源通知,或者您可以注册一个单独的 接收订阅的生命周期通知网址已删除和错过 通知在单独的端点中。

订阅用户的日历事件后,我会毫无问题地收到更改通知,但如果我更改用户的密码,我应该会收到生命周期事件通知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)

【问题讨论】:

  • 永远不要依赖 Microsoft 通知和 API,您需要捕获任何类型的通知和 API 调用错误。如果您的 API 调用响应 4xx 标头,那么您必须根据错误代码和消息执行相关操作。
  • 请注意“我/事件”,它仅适用于主日历。如果有,您必须为每个日历创建一个额外的通知渠道。
  • 我也注意到@Luis Leon 分享的完全相同的问题。任何人都可以回答这个问题。

标签: javascript node.js outlook notifications microsoft-graph-api


【解决方案1】:

如果您想监听生命周期事件,那么在创建订阅时,您必须使用 lifecycleNotificationUrl 属性指定通知端点。如果您指定端点,所有当前和未来类型的生命周期通知都将在那里传递。否则,subscriptionRemoved 和错过的生命周期通知将不会被传递。此端点可以与 notificationUrl 相同或不同。

在你的情况下,你没有设置这个属性。

请查看官方文档-https://docs.microsoft.com/en-us/graph/webhooks-lifecycle#creating-a-subscription

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多