Как реализовать на Node js проверку авторизации полученых с помощью виджета авторизации Telegram
Не получается реализовать проверку данных авторизации через Телеграм виджет. В документации Телеграм (https://core.telegram.org/widgets/login) описано как происходит проверка хеша с данными и ссылка на пример с образцом кода на РНР, но у меня возникли трудности с реализацией подобного функционала на Node.Js!
data_check_string = ...
secret_key = SHA256(<bot_token>)
if (hex(HMAC_SHA256(data_check_string, secret_key)) == hash) {
// data is from Telegram
}
Заранее спасибо!
Ответы (1 шт):
Автор решения: Oleh Butsyk
→ Ссылка
Решил проблему с помощью такой реализации
async function checkTgAuth({ hash, ...userData}) {
const secretKey = crypto.createHash('sha256')
.update(config.token)
.digest();
const dataCheckString = Object.keys(userData)
.sort()
.map(key => (`${key}=${userData[key]}`))
.join('\n');
const hmac = crypto.createHmac('sha256', secretKey)
.update(dataCheckString)
.digest('hex');
return hmac === hash;
}