razrab228
@razrab228
зачем тебе знать это?

Почему не совпадают хэши тг авторизации?

Здравствуйте! Возникла проблемка с хэшами от тг.

вот данные, которые отправляет клиент:

auth_date: 1725635348,
first_name: "имя",
hash: "1f8eb04ac90957fb1b264536c8585a39ea6b25851fddae2b67560affcc581c4d",
id: idшник,
username: "ник"


сверяю хэши на бэке:

class TelegramAuthAPIView(APIView):
    permission_classes = [IsAuthenticated]

    def post(self, request, *args, **kwargs):
        user_data = request.data
        hash_check = user_data.get('hash')

        if not hash_check:
            return JsonResponse({'detail': 'Не передан хэш'}, status=400)

        auth_data = {k: v for k, v in user_data.items() if k != 'hash'}

        data_check_arr = [f"{k}={v}" for k, v in sorted(auth_data.items())]
        data_check_string = "\n".join(data_check_arr)
        data_check_string.encode('utf-8')

        secret_key = hashlib.sha256(config('TELEGRAM_KEY').encode()).digest()
        expected_hash = hmac.new(secret_key, data_check_string.encode('utf-8'), hashlib.sha256).hexdigest()

        print(f"Expected hash: {expected_hash}")
        print(f"Received hash: {hash_check}")

        if expected_hash != hash_check:
            return JsonResponse({'detail': 'Хэш не совпадает'}, status=403)


возвращается всегда ошибка несовпадения хэшей. Кто знает, почему? и как решить...
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
Не совпадают только по одной причине, ты их неправильно посчитал, разбираться в твоих вычислениях большинству будет лень, так что давай самостоятельно, можешь посмотреть как это делает тот же aiogram
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы