Как уже упоминалось в Twitter Docs
Шаги для подтверждения запроса
- Создайте хеш, используя свой секретный ключ потребителя и тело входящей полезной нагрузки.
- Сравните созданный хеш со значением x-twitter-webhooks-signature в кодировке base64.
Вот мой код для этого:
const buffer = Buffer.from(JSON.stringify(ctx.request.body))
const expectedHash = crypto.createHmac('sha256', TWITTER_CONSUMER_SECRET).update(buffer).digest('base64')
Заголовок x-twitter-webhooks-signature
из твиттера и сгенерированный хэш не совпадают. Кроме того, сообщение на https://twittercommunity.com/t/validating-the-webhook-signature-header-in-node-js/102525 говорит, что это JSON.stringify()
проблема. Я использую koa и koa-body, как я могу исправить несоответствие хеша?