尽管没有更改,但 JSON Web 令牌不再具有“解码”属性

问题描述

我有一个用户提供令牌的函数,以便他们可以使用 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 编码错误,我认为这可能是有关联的。

奇怪的是,虽然没有对该令牌对象或函数进行任何更改,但我们在解码此令牌时突然遇到此错误。如果有人有任何指点,将不胜感激。

Screenshot from user

解决方法

PyJWT 将 from picamera import PiCamera camera = PiCamera() camera.resolution = (1920,1080) app = App() def preview(): camera.start_preview(fullscreen=False,window = (50,150,2048,1152)) button = PushButton(app,command=preview,text="preview") def stop_preview(): camera.stop_preview() button = PushButton(app,command=stop_preview,text="stop preview") def shutter(): camera.capture('/home/pi/Desktop/image.jpg') button = PushButton(app,command=shutter,text="shutter") app.display() 的返回类型从 jwt.encode 更改为 byteshttps://pyjwt.readthedocs.io/en/stable/changelog.html#jwt-encode-return-type

解决方案是将 str 包降级/固定到 PyJWT 或删除对 1.7.1 的调用

decode