NodeJS 电报机器人登录检查授权不等于散列

5cnsuln7  于 2022-12-18  发布在  Node.js
关注(0)|答案(2)|浏览(115)

我尝试使用电报机器人连接网站,当我打开网站时,当我验证throw node.js和不相等时,我得到查询和散列

const key = crypto.createHash('sha256').update(my_bot_token).digest()
const validateHash = crypto.createHmac('sha256', key).update('auth_date=1646xxx\nfirst_name=namexxx\nid=1231xxxx\nAusername=alexLxxx').digest('hex')
console.log(hash === validateHash) false

我不知道我哪里出错了,我尝试使用npm包telegram-checking-authorization,但同样的错误

qgelzfjb

qgelzfjb1#

您应该添加从请求回调接收的所有字段数据,但删除hash字段。例如:

`auth_date=1665991955
first_name=xxxxx
id=xxxxxx
last_name=xxxxx
photo_url=xxxxxxx
username=xxxxx`

我尝试并成功了。

djmepvbi

djmepvbi2#

我也遇到过这种情况,我在My question中描述了它。您可以从这个API复制响应:https://oauth.telegram.org/auth/get?bot_id=xxx有时候函数的响应会起作用,有时候不起作用,老实说,我不明白为什么。尝试将user打印到控制台,然后检查两个哈希是否匹配!

我所做的如下:

我改变了我的机器人的域到https://www.w3schools.com/和去w3school在线编辑器https://www.w3schools.com/js/tryit.asp?filename=tryjs_string_indexof例如,打印user对象到控制台(替换javascript在在线编辑器与代码下面,然后替换代码中的YOUR-BOT-NAME与您的机器人的名称):

<script async src="https://telegram.org/js/telegram-widget.js?21" data-telegram-login="YOUR-BOT-NAME" data-size="large" data-onauth="onTelegramAuth(user)" data-request-access="write"></script>
<script type="text/javascript">
  function onTelegramAuth(user) {
    console.log(JSON.stringify(user, null, 2));
  }
</script>

1.按f12键,进入控制台页签,用widget登录,用你的函数检查控制台打印的数据。

相关问题