Проверка данных, полученных через мини-приложение, не работает.Python

Программы на Python
Ответить
Anonymous
 Проверка данных, полученных через мини-приложение, не работает.

Сообщение Anonymous »

У меня возникла проблема с этим методом в моем мини-приложении Telegram:
https://core.telegram.org/bots/webapps# ... e-mini-app
Когда клиент пытается войти в мой интерфейс мини-приложения, отправляет проверочную строку, как в статье, я генерирую хеш-строку на серверной части, чтобы проверить вход клиента с помощью этой функции

Код: Выделить всё

import json
import urllib.parse
import hmac
import hashlib

def verify_telegram_webapp_data(telegram_init_data: str, bot_token: str) -> bool:
init_data = json.loads(urllib.parse.unquote(telegram_init_data))
if "hash" not in init_data:
return False

hash_ = init_data.pop('hash')

data_to_check_parts = []
for key, value in sorted(init_data.items()):
if isinstance(value, dict):
value = json.dumps(value, separators=(',', ':'), ensure_ascii=False)
data_to_check_parts.append(f"{key}={value}")

data_to_check = "\n".join(data_to_check_parts)

secret_key = hmac.new(bot_token.encode(), 'WebAppData'.encode(), hashlib.sha256).digest()
computed_hash = hmac.new(data_to_check.encode(), secret_key, hashlib.sha256).hexdigest()

print('Data to check:', data_to_check)
print('Computed hash:', computed_hash)
print('Provided hash:', hash_)

return computed_hash == hash_
Раньше Telegram добавлял photo_url в свои данные — этот код работал нормально, но теперь он не работает — предоставленный хэш и вычисленный хеш отличаются
Пробовал менять photo_url, удалять, но результат тот же...

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-not-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»