убер documentation говорятКак проверить веб-сайт uber?
Значение этого поля является шестнадцатеричным HMAC подпись тела запроса webhook HTTP, используя секрет клиента в качестве ключа и SHA256 в качестве хэш-функции.
Но что такое тело запроса HTTP? Я предполагаю, что это тело JSON, полученное от webhook (https://developer.uber.com/docs/webhooks#section-example-post).
Если это так, то как проверить его в NodeJS, поскольку крипто-модуль для HMAC не принимает JSON [я пытался подстроить JSON, но он генерирует другой хеш]. Или как преобразовать JSON в буфер, так как это следующий лучший вариант.
Если нет, то что я должен использовать?
[Update1] Код, используемый для выполнения этой задачи:
app.post("/",function(req,res){
const crypto = require('crypto');
var input = res.body
var str_input=JSON.stringify(input)
const hmac = crypto.createHmac('sha256', '<CLIENT SECRET>');
hmac.update(str_input);
console.log(hmac.digest('hex')); // print same as below
console.log("e034ac7db29c3c0c10dfeced41a6cd850ed74c1c3c620863d47654cc7390359a")
})
Вы правы, что 'JSON.stringify (req.body)' - это то, что вы должны передавать своей хеширующей функции. Можете ли вы включить код для своей хэш-функции в вопрос? –
@AndrewNoonan Я добавил код для того же – rkc88
. Можете ли вы опубликовать окончательный код? Я добавил замену ответа на свой код как: 'var input = JSON.stringify (req.body) .replace (/ \ // g, '\\' + '/');' но это не сработало. Подпись Uber не совпадает с заголовком. – gaskbr