Ошибка в функции verify_key из библиотеки discord_interactions для Python: Подпись была подделана или повреждена
У меня есть такой фрагмент кода:
def interactions_view(request):
if request.method == 'POST':
try:
raw_body = request.body
signature = request.headers.get('X-Signature-Ed25519')
timestamp = request.headers.get('X-Signature-Timestamp')
logger.debug(f"Signature (type: {type(signature)}): {signature}")
logger.debug(f"Timestamp (type: {type(timestamp)}): {timestamp}")
logger.debug(f"Raw Body (type: {type(raw_body)}): {raw_body}")
if not signature or not timestamp:
return JsonResponse({'Error': 'Missing signature or timestamp'}, status=400)
try:
verify_key(raw_body, signature, timestamp, PUBLIC_KEY)
except Exception as e:
logger.error(f"Signature verification failed: {e}")
return JsonResponse({'Error': 'Signature verification failed'}, status=401)
. . .
И он возвращает эту ошибку в журналах сервера:
2024-06-29T22:14:41.227687+00:00 app[web.1]: Signature was forged or corrupt
С кодом состояния 200 OK каждый раз, когда Discord пытается отправить ему POST-запрос для проверки (я хочу, чтобы мой сервер был конечной точкой взаимодействия для бота)
Я пробовал декодировать и кодировать ключи в биты и строки, и каждый раз он возвращает различные ошибки, такие как "не удалось конкатенировать объект str в байты" и наоборот, помимо всего прочего, отладка и захват информации журнала, как показано выше, но ничего не работает. Может ли кто-нибудь сказать мне, если я что-то упускаю? Или если я сделал что-то не так?