microsoft-graph-api - 订阅推送通知期间出现超时错误
问题描述
当我尝试订阅推送通知并将我的 API Gateway 端点用作通知 url
curl -H 'Content-Type: application/json' -H 'Authorization: Bearer TOKEN' \
-d '{
"changeType": "Created",
"expirationDateTime": "2020-09-04T14:48:27.391Z",
"notificationUrl": "AWS_API_GATEWAY/dev/webhooks",
"resource": "/me/mailfolders('\''inbox'\'')/messages"}' \
-X POST "https://graph.microsoft.com/v1.0/subscriptions"
我收到请求超时错误()
{
"error": {
"code": "InvalidRequest",
"message": "Subscription validation request timed out.",
"innerError": {
"date": "2020-09-02T14:51:26",
"request-id": "2d4c31ae-af4c-40cb-a40e-d7ec4281ddfc"
}
}
}
几周前,同样的请求没有任何问题。现在大约 5 个中只有 1 个是成功的。但是,当我执行相同的请求但将我的 ngrok 作为通知 url(这是非常相同的 AwsApiGateway 的简单反向代理ngrok -> ruby proxy stuff -> aws api gateway
)时,它可以完美运行
curl -H 'Content-Type: application/json' -H 'Authorization: Bearer TOKEN' \
-d '{
"changeType": "Created",
"expirationDateTime": "2020-09-04T14:48:27.391Z",
"notificationUrl": "NGROK_PROXY/dev/webhooks",
"resource": "/me/mailfolders('\''inbox'\'')/messages"}' \
-X POST "https://graph.microsoft.com/v1.0/subscriptions"
看起来某些 Outlook 对我的 ApiGateway 端点设置了一些限制。不过,我还没有在文档中找到对这种行为的任何解释。
任何帮助将非常感激
解决方案
我们的图形订阅端点(由 NodeJS Lambda 支持的 AWS API 网关)遇到了这个确切的问题,并且正在努力追查确切的原因。
我们尝试了多种方法来调试正在发生的事情,包括:
- 检查 Lambda 执行日志 - 对于失败的尝试没有任何影响。
- API Gateway 日志 - 没有任何记录。
- API Gateway 'Access Logging' - 再次没有。
- 从在不同 Azure 区域中运行的 VM 调用端点 - 没有问题。
我们对您得出了类似的结论 - Microsoft Graph API (有意或无意地)阻止了对 AWS API Gateway 端点的订阅请求。
我们的解决方案是在 API Gateway 端点前添加一个 Route53 托管域。自从添加它以来,由于“超时”,我们的失败率为零。
推荐阅读
- android-studio - 为什么我只看到官方 android 类的反编译源代码?
- c++ - stof()/stoi() 的 C++ 无效参数(std::invalid_argument: stoi: 无转换)
- php - Laravel Collection::toArray() 触发额外的数据库查询
- pytorch - 如何为 PyTorch 中的特定张量释放 GPU 内存?
- javascript - Gatsby 无法从 GraphQL 查询中创建多个子部分?
- javascript - 您如何从 monaco 编辑器中检索主题?
- kotlin - ImageView 不尊重 CardView 的大小
- python-3.x - 如何在数据框列值中查找字符串
- visual-studio-2012 - Visual Studio - 菜单选项 - 向右或向左浮动
- c - 时钟()可以在while循环中变慢吗?