#python #django #jwt #twilio #twilio-api
#python #django #jwt #twilio #twilio-api
Вопрос:
У меня есть функция, которая предоставляет пользователю токен, чтобы он мог получить доступ к комнате видеочата с помощью Twilio Video API. Следуя их документам, мы декодируем веб-токен JSON следующим кодом, чтобы предоставить нам их токен:
token = AccessToken(ACCOUNT_SID, API_KEY, API_SECRET, identity=f'{request.user.email}')
token.add_grant(VideoGrant(room='My Room'))
context = {
'token': token.to_jwt().decode()
}
Это отлично работало локально, и после отправки его на действующие серверы продолжал работать там без сбоев. Однако несколько нажатий спустя, без изменений в этом коде, и эта ошибка (ниже) внезапно произошла. Это также происходит одновременно с другой ошибкой, которая является ошибкой кодировки ascii, которая, я полагаю, может быть связана.
Странно, что, хотя в этот объект токена или функцию не было внесено никаких изменений, мы внезапно сталкиваемся с этой ошибкой при декодировании этого токена. Если у кого-нибудь есть какие-либо указатели, буду признателен.
Ответ №1:
PyJWT изменил возвращаемый тип jwt.encode
from bytes
на str
: https://pyjwt.readthedocs.io/en/stable/changelog.html#jwt-encode-return-type
Решение состоит в том, чтобы либо понизить / закрепить PyJWT
пакет 1.7.1
, либо удалить вызов decode
context = {
'token': token.to_jwt()
}
Комментарии:
1. Это было исправлено для производства, спасибо! Как ни странно, производство не жаловалось на установку
PyJWT 2.0
, несмотря на требование Twilio1.7.1
. Серверы разработчиков не разрешили установку несовместимости, отсюда и ошибка с одной стороны