【问题标题】:JSON Web Token no longer has 'decode' attribute despite no changes尽管没有更改,JSON Web 令牌不再具有“解码”属性
【发布时间】:2021-04-28 06:40:44
【问题描述】:

我有一个为用户提供令牌的函数,以便他们可以使用 Twilio Video API 访问视频聊天室。根据他们的文档,我们使用以下代码解码 JSON Web 令牌,以提供他们的令牌:

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

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

【问题讨论】:

    标签: python django jwt twilio twilio-api


    【解决方案1】:

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

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

    context = {
        'token': token.to_jwt()
    }
    

    【讨论】:

    • 这是生产的修复,谢谢!奇怪的是,尽管 Twilio 需要 1.7.1,生产并没有抱怨安装 PyJWT 2.0。开发服务器没有让不兼容安装,因此一侧的错误
    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2015-05-23
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多