Здравствуйте! Возникла проблемка с хэшами от тг.
вот данные, которые отправляет клиент:
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)
возвращается всегда ошибка несовпадения хэшей. Кто знает, почему? и как решить...