问题描述
所以我一直在为 Streamlabs chatbot 构建自己的高级脚本有一段时间了,我已经到了需要通过 EventSub 访问 Twitch webhook 的地步。我遇到的问题是我一生都无法弄清楚如何验证返回的签名。
Twitch 文档 (https://dev.twitch.tv/docs/eventsub#verify-a-signature) 说:
签名使用 HMAC-SHA256。 HMAC 密钥是您订阅的秘密。 HMAC 消息是 Twitch-Eventsub-Message-Id 标头、Twitch-Eventsub-Message-Timestamp 标头和请求正文的原始字节的串联。
然后给出一些伪代码使用:
hmac_message = headers['Twitch-Eventsub-Message-Id'] + headers['Twitch-Eventsub-Message-Timestamp'] + request.body
signature = hmac_sha256(webhook_secret,hmac_message)
expected_signature_header = 'sha256=' + signature.hex()
if headers['Twitch-Eventsub-Message-Signature'] != expected_signature_header:
return 403
这段代码会很棒,但我不知道 hmac_sha256()
函数应该是什么。我的 IDE 无法识别它。
我尝试了许多其他计算签名的方法,但每次都得到错误计算的签名。所以基本上我只需要实际弄清楚如何使用 sha256 哈希计算 Twitch 签名。
解决方法
如果您查看 twitch 文档,他们提供的示例是伪代码,而不是要运行的实际代码。
这篇文章有一个验证签名的例子,应该足以让你弄清楚这一点。
https://discuss.dev.twitch.tv/t/verifying-signature-mismatch-python-and-i-dont-know-why/32112
如果您仍然无法弄清楚,请告诉我,我会为您发布一个示例。