У меня есть код для бэка на котором я валидирую хэш полученный от телеграмм, я отправляю запрос за бэк с правильными данными, но хэш не совпадает
def sha256(key):
return hashlib.sha256(key.encode('utf-8')).digest()
def hmac_sha256(data, secret_key):
return hmac.new(secret_key, data.encode('utf-8'), hashlib.sha256).hexdigest()
def verify_telegram_data(bot_token, received_hash, **kwargs):
sorted_keys = sorted(kwargs.keys())
data_check_string = "\n".join(f"{key}={kwargs[key]}" for key in sorted_keys)
print(data_check_string)
secret_key = sha256(bot_token)
calculated_hash = hmac_sha256(data_check_string, secret_key)
print(calculated_hash)
return calculated_hash == received_hash
async def create_session(request: Request):
body = await request.json()
print(body)
try:
hash = str(body['hash'])
auth_date = int(body['auth_date'])
first_name = str(body['first_name'])
id = str(body['id'])
username = str(body['username'])
except: return 'BAD PARAMS'
return verify_telegram_data(
config.TOKEN,
hash,
auth_date=auth_date,
first_name=first_name,
id=id,
username=username
)
Тело запроса который я отправляю на сервер(Данные изменены на другие чтобы не палить свои):
{
"hash": "хэш",
"auth_date": "дата",
"first_name": "имя",
"id": "ид",
"username": "юзер"
}