Sterrist
@Sterrist
Python Junior Developer

Не работает валидация токена telegram login widget?

У меня есть код для бэка на котором я валидирую хэш полученный от телеграмм, я отправляю запрос за бэк с правильными данными, но хэш не совпадает
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": "юзер"
}
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
Sterrist
@Sterrist Автор вопроса
Python Junior Developer
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы