您如何使用 Twilio Node SDK 来验证 webhook 请求?
How do you use the Twilio Node SDK to validate webhook requests?
我正在尝试根据此处的文档 https://www.twilio.com/docs/usage/tutorials/how-to-secure-your-express-app-by-validating-incoming-twilio-requests 将 Twilio Node SDK 与我的 Express 应用程序一起使用,以验证对我的 webhook 端点的请求实际上来自 Twilio。
我在我的生产环境中设置了 TWILIO_AUTH_TOKEN
环境变量,并像这样定义了我的 webhook 端点:
router.post(
"/foo",
twilio.webhook(),
async (req, res) => {
...
}
但是,当我向触发 webhook 的 Twilio 号码发送短信时,它 returns 一个 403。通过检查 Twilio 控制台中的调试器,响应正文是 Twilio Request Validation Failed
。
不太确定我在这里做错了什么,因为文档使它听起来相当简单。如果我删除 twilio.webhook()
行,一切都会按预期进行。 Webhook 端点是 https
,并且我在我的 Twilio 帐户中启用了 SSL 证书验证。
我最终通过遵循 Twilio 安全指南中的步骤自行生成哈希并将其与 x-twilio-signature
header 进行比较,从而使它起作用。我唯一的猜测是 Twilio Node SDK 有问题。
只需向您的号码发送短信,它不会期望通过 http 请求,而是来自 Twilio(当您的号码收到短信并且 Twilio 调用网络钩子时)
我正在尝试根据此处的文档 https://www.twilio.com/docs/usage/tutorials/how-to-secure-your-express-app-by-validating-incoming-twilio-requests 将 Twilio Node SDK 与我的 Express 应用程序一起使用,以验证对我的 webhook 端点的请求实际上来自 Twilio。
我在我的生产环境中设置了 TWILIO_AUTH_TOKEN
环境变量,并像这样定义了我的 webhook 端点:
router.post(
"/foo",
twilio.webhook(),
async (req, res) => {
...
}
但是,当我向触发 webhook 的 Twilio 号码发送短信时,它 returns 一个 403。通过检查 Twilio 控制台中的调试器,响应正文是 Twilio Request Validation Failed
。
不太确定我在这里做错了什么,因为文档使它听起来相当简单。如果我删除 twilio.webhook()
行,一切都会按预期进行。 Webhook 端点是 https
,并且我在我的 Twilio 帐户中启用了 SSL 证书验证。
我最终通过遵循 Twilio 安全指南中的步骤自行生成哈希并将其与 x-twilio-signature
header 进行比较,从而使它起作用。我唯一的猜测是 Twilio Node SDK 有问题。
只需向您的号码发送短信,它不会期望通过 http 请求,而是来自 Twilio(当您的号码收到短信并且 Twilio 调用网络钩子时)