【发布时间】:2017-08-07 19:46:57
【问题描述】:
我在启动 Microsoft Graph Webhook 订阅时遇到问题(尤其是邮箱)。启动订阅时,似乎 Microsoft 接受了我为配置订阅而发送的所有参数,但总订阅失败,因为它从我配置的端点接收到非 2xx 响应。
我的端点将401 发送回 Microsoft 的原因是因为他们的包含订阅验证令牌的 POST 缺少 clientState。
我正在使用 clientState 键值对来验证 Microsoft 与我的端点之间的所有通信。如果我的端点没有看到正确的 clientState,它将返回 401。
对我可能遗漏的内容有什么想法,或者我是否应该以不同的方式解决这个问题?在我看来,让我的端点接受未经身份验证的 GET/POST 不是一种选择。
使用 POST 方法的示例请求正文,包括标头中的 API 密钥:
{
"changeType": "created",
"clientState": "testClientState",
"resource": "users/<UserName>/messages",
"expirationDateTime": "2017-08-10T10:24:57.0000000Z",
"notificationUrl": "<EndpointURL>"
}
微软返回错误:
"error": {
"code": "InvalidRequest",
"message": "Subscription validation request failed. Must respond with 200 OK to this request.",
"innerError": {
"request-id": "adf7fc7b-6b14-4422-8526-c1391be8dd27",
"date": "2017-08-07T16:24:59"
}
}
在我的端点收到验证令牌之前,我了解一切都按预期工作,因为我收到了验证令牌,但我的端点拒绝它,因为它缺少客户端状态。
端点日志片段:
queryStringParameters": {
"validationToken": "<ValidationToken sent by Microsoft>"
}
我的 API 端点逻辑基于 Microsoft 的一些开发人员指南。特别是对于订阅创建,我是using this guide。
【问题讨论】: