Microsoft Graph API上的密码更改未触发lifecycleEvent“ subscriptionRemoved”的通知

时间:2019-10-17 15:26:31

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

我正在使用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)

1 个答案:

答案 0 :(得分:0)

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

就您而言,您尚未设置此属性。

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