Не удается заставить Telegram WebApp Validation работать с помощью python

Я не могу подтвердить данные, которые Telegram отправил в мое WebApp.

import hashlib
import hmac
import json
import typing
from urllib.parse import unquote


def parse_init_data(init_data: str) -> typing.Dict:
    return dict(param.split("=") for param in init_data.split("&"))


def parse_user_data(user_data: str) -> dict:
    return json.loads(unquote(user_data))


def _extract_hash_value(init_data: str) -> str:
    return parse_init_data(init_data)["hash"]


def generate_secret_key(telegram_bot_token: str, c_str: str = "WebAppData") -> str:
    c_str_enc = c_str.encode()
    token_enc = telegram_bot_token.encode()
    return hmac.new(token_enc, c_str_enc, digestmod=hashlib.sha256).hexdigest()


def validate(init_data: str, secret_key: str) -> bool:
    
    hash_ = _extract_hash_value(init_data)
    unquote_init_data = unquote(init_data)
    sorted_init_data = sorted(
        [chunk.split("=") for chunk in unquote_init_data.split("&") if chunk[: len("hash=")] != "hash="],
        key=lambda x: x[0],
    )
    sorted_init_data_str = "\n".join([f"{key}={val}" for key, val in sorted_init_data])
    init_data_enc = sorted_init_data_str.encode()
    secret_key_enc = secret_key.encode()
    data_check = hmac.new(init_data_enc, secret_key_enc, digestmod=hashlib.sha256).hexdigest()
    return hmac.compare_digest(hash_, data_check)
    

Этот код взят с github. Он предназначен для проверки данных, поступающих из Telegram в мой WebApp. Я прошел все необходимые вещи... извлечение данных пользователя из отправленных данных Telegram работает. Но валидация данных из Telegram не работает. Вот initData, которую я получил

query_id=AAHkHFkqAAAAAOQcWSqv8eyu&user=%7B%22id%22%3A710483172%2C%22first_name%22%3A%22Ro%27zmat%22%2C%22last_name%22%3A%22Otajonov%22%2C%22username%22%3A%22OtajonovR%22%2C%22language_code%22%3A%22en%22%2C%22is_premium%22%3Atrue%2C%22allows_write_to_pm%22%3Atrue%7D&auth_date=1713215281&hash=c7907965154661f6f322d02e4a97086568e033980818396b623649ba3a062685

а этот код - мое представление в django, которое пытается подтвердить, используя вышеуказанные функции:

from django.shortcuts import render
from .webapp_auth import parse_init_data, parse_user_data, validate, generate_secret_key
from django.contrib.auth import get_user_model

User = get_user_model()

def business_settings_view(request):
    if request.method == 'POST':
        
        init_data_string = request.POST.get('initData')
        secret_key = generate_secret_key("6194107681:AAFc76vwjlxsWA...")
        
        db_user = None
        tg_user = None
        init_data = None
        is_valid = False
        
        if validate(init_data_string, secret_key):
            
            is_valid = True


            
            
            
        init_data = parse_init_data(init_data_string)
        tg_user = parse_user_data(init_data['user'])
        
        try:
            db_user = User.objects.get(telegram_id=tg_user['id'])
        except User.DoesNotExist:
            db_user = None
        
        
        context = {'db_user': db_user, 'init_data': init_data, 'is_valid': is_valid}
        return render(request, 'business-settings.html', context)


    else:
        return render(request, 'webapp-init.html')

Я пытался использовать все, кроме validate(). все работает нормально. Но validate() все время возвращает False

Вернуться на верх