问题描述
我有一个为用户提供令牌的函数,以便他们可以使用 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 编码错误,我认为这可能是有关联的。
奇怪的是,虽然没有对该令牌对象或函数进行任何更改,但我们在解码此令牌时突然遇到此错误。如果有人有任何指点,将不胜感激。
解决方法
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
更改为 bytes
:https://pyjwt.readthedocs.io/en/stable/changelog.html#jwt-encode-return-type
解决方案是将 str
包降级/固定到 PyJWT
或删除对 1.7.1
的调用
decode