You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Graph订阅创建成功但未收到通知的技术问询

排查Microsoft Graph订阅成功但收不到通知的问题

我之前处理过不少类似的Graph订阅问题,结合你提供的订阅信息,咱们一步步来排查可能的原因:

1. 确认通知URL的公网可达性与HTTPS合规性

你的通知URL是https://my.domain.com/notification/listen,首先要确保:

  • 这个地址在公网环境下能被Microsoft Graph正常访问。如果是本地开发环境,必须用内网穿透工具暴露服务,否则Graph无法发起回调请求。
  • URL必须使用标准HTTPS端口443,且SSL证书是受公共CA信任的(自签证书仅适用于Graph的测试沙箱环境,生产环境不支持)。

2. 检查订阅的验证请求是否正确处理

当你创建订阅时,Graph会立即发送一个带validationToken的GET请求到你的通知URL,你必须:

  • 返回HTTP 200状态码
  • 响应体直接返回收到的validationToken(不能添加任何额外内容)
    如果没有正确处理这个验证步骤,订阅虽然返回创建成功,但实际上不会被激活,自然无法收到后续通知。建议查看你的服务日志,确认是否收到过这个验证请求,以及是否正确响应。

3. 验证事件触发条件是否匹配你的订阅配置

你的订阅监听的是users/me@my.domain.com/events的created,updated操作:

  • 确保你确实对该用户的日历执行了创建或更新事件的操作(删除事件不会触发此订阅)
  • 注意Graph通知存在一定延迟,通常在几分钟内,不要操作后立即判定没收到通知

4. 确认订阅是否处于有效期内

从你提供的响应来看,订阅的expirationDateTime是2018-04-27T17:57:16.0115964+00:00,如果当前时间已超过这个时间点,订阅已经失效,需要重新创建。如果这是测试用的示例时间,建议通过Graph API查询当前订阅状态,确认其有效性。

5. 排查服务端的请求拦截与日志

  • 检查你的服务是否有防火墙、WAF或负载均衡器,是否拦截了来自Microsoft Graph的请求(Graph的IP范围是动态的,不能通过固定IP白名单限制,需允许所有Microsoft服务的请求)
  • 查看通知URL对应的服务日志,确认是否收到过Graph的通知请求:
    • 如果收到但返回了非200状态码,Graph会停止发送通知,需要修复服务的处理逻辑
    • 如果完全没收到请求,大概率是URL不可达或被拦截

6. 检查clientState的验证逻辑(如果有)

订阅中的clientState是用于验证通知合法性的标识,当Graph发送通知时会携带该值。如果你的服务在接收通知时,因clientState不匹配就丢弃请求,也会导致你误以为没收到通知。可以暂时关闭clientState验证逻辑,测试是否能收到通知。


内容的提问来源于stack exchange,提问作者user1477388

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:11:41