我正在使用Microsoft Graph API通过Node订阅日历事件的通知。阅读了Reduce missing subscriptions and notifications for Outlook resources (preview)的最佳做法文档后,它说:
Outlook中的某些事件可能导致订阅被删除。 这些事件包括:
- 用户密码已重置
- 用户的设备不合规
- 用户的帐户已被撤消
发生此类事件时,Outlook发送特殊的生命周期 通知,subscribedRemoved。
Outlook还会发送另一个生命周期通知,如果没有 通知无法传递到应用程序。
一个订阅Outlook资源通知的应用,例如 消息和事件,应收听订阅已删除和错过 信号:
- 收到订阅后,通知已删除,应用应 重新创建订阅以保持连续的流程。
- 在收到错过的通知时,应用程序应重新同步资源 使用Microsoft Graph的数据。
要接收生命周期通知,您 可以使用已经收到的现有notificationUrl端点 资源通知,也可以单独注册 lifecycleNotificationUrl接收订阅已删除并错过 通知在单独的端点中。
订阅用户的日历事件后,我会收到更改通知,没有任何问题,但是,如果更改用户密码,则应该收到如上面所说的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)
答案 0 :(得分:0)
如果您想监听生命周期事件,那么在创建订阅时,您必须使用 lifecycleNotificationUrl 属性指定一个通知端点。如果您指定端点,则所有当前和未来类型的生命周期通知都将在那里传送。否则,将不会发送 subscriptionRemoved 和错过的生命周期通知。此端点可以与 notificationUrl 相同或不同。
就您而言,您尚未设置此属性。
请参阅官方文档 - https://docs.microsoft.com/en-us/graph/webhooks-lifecycle#creating-a-subscription