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

创建Microsoft Graph订阅报错:通知端点需响应200 OK验证请求

Microsoft Graph 订阅验证流程与问题解决

完整验证流程

当你调用Microsoft Graph创建订阅的API后,会触发以下验证步骤:

  • Graph服务立即向你指定的notificationUrl发送GET请求,请求URL中携带validationtoken查询参数
  • 你的端点必须在10秒内返回200 OK状态码,且响应体为纯文本格式的validationtoken参数值,不能包含任何额外内容(如HTML、JSON结构)
  • Graph确认收到正确响应后,才会完成订阅创建;若未收到符合要求的响应,就会返回你遇到的验证失败错误

端点处理核心要求

  • 必须支持GET请求(POST请求是后续接收通知用的,验证阶段只用GET)
  • 响应头Content-Type需设置为text/plain
  • 响应体严格等于请求中的validationtoken值,不能添加引号、空格或其他字符
  • 确保端点可被公网访问(本地测试可使用内网穿透工具,如ngrok)

示例端点代码(Python Flask)

from flask import Flask, request, Response

app = Flask(__name__)

@app.route('/notification-endpoint', methods=['GET', 'POST'])
def handle_notification():
    # 处理验证请求
    if request.method == 'GET':
        validation_token = request.args.get('validationtoken')
        if validation_token:
            return Response(validation_token, mimetype='text/plain', status=200)
        return Response('Missing validation token', status=400)
    
    # 处理后续通知(POST请求)
    elif request.method == 'POST':
        # 此处编写处理通知内容的逻辑
        print(request.get_json())
        return Response(status=202)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

常见排查要点

  • 验证端点公网可达性:用curl或浏览器访问notificationUrl,确认能正常响应
  • 检查GET请求处理逻辑:是否正确提取validationtoken,有没有返回多余内容
  • 控制响应时间:确保验证逻辑足够简洁,响应不超过10秒
  • 确认权限配置:检查Mail.Read/Mail.ReadWrite权限是否已正确授予(委派权限需用户同意,应用权限需管理员同意)
  • 核对订阅请求参数:比如resource是否为users/{user-id}/mailFolders('Inbox')/messages,changeType是否包含所需类型(如created,updated)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:15:35