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)


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

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

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