JSON Web 令牌不再具有 'decode' 属性,尽管没有更改

JSON Web Token no longer has 'decode' attribute despite no changes

我有一个功能可以为用户提供令牌,以便他们可以使用 Twilio Video API 访问视频聊天室。按照他们的文档,我们使用以下代码解码 JSON Web Token 以获得他们的令牌:

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 编码错误,我相信这可能是有联系的。

很奇怪,虽然没有对这个token对象或者函数做任何改动,但是我们在解码这个token的时候突然遇到这个错误。如果有人有任何指点,将不胜感激。

PyJWT 将 jwt.encode 的 return 类型从 bytes 更改为 strhttps://pyjwt.readthedocs.io/en/stable/changelog.html#jwt-encode-return-type

解决方案是 downgrade/pin 将 PyJWT1.7.1 或删除对 decode

的调用
context = {
    'token': token.to_jwt()
}