python - 如何根据需求在python中生成JWT
问题描述
我正在尝试生成 JWT 以在 API 集成中使用它。以下是生成 JWT 令牌的具体要求,但我没有关注如何在 python 中执行此操作。
它显示了以下 Java 代码段:
JWT.create()
.withIssuer("CLIENT_ID")
.withExpiresAt(new Date(System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5)))
.sign(Algorithm.HMAC256("CLIENT_SECRET"));
因此,我正在尝试创建它...这里我在 python 中使用JWT lib,这是我的代码:
from datetime import datetime, timedelta, timezone
from jwt import JWT
from jwt.utils import get_int_from_datetime
instance = JWT()
message = {
'iss': 'CLIENT_ID',
'exp': get_int_from_datetime(datetime.now(timezone.utc) + timedelta(hours=23))
}
signing_key = 'CLIENT_SECRET'
compact_jws = instance.encode(message, signing_key, alg='HS256')
print('compact_jws', compact_jws)
但是上面的代码给了我以下错误:
TypeError: key 必须是实现 jwt.AbstractJWKBase 的类的实例
我不确定我写的代码是否符合要求,请帮助我。
解决方案
尝试使用pyjwt: PyJWT 而不是jwt
然后您可以执行以下操作:
encoded_jwt = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')
安装它:
pip install pyjwt
并将其用作:
import jwt
推荐阅读
- ios - Swift super.init() - 属性未在 super.init 调用时初始化
- git-bash - 当 Open SSH 中的 DefaultShell 参数不是 Windows 命令行时,VSCode Remote-SSH 会中断
- python - 奥马哈扑克通过两个列表循环。如何获得所有可能的组合?
- python - requests.get() 没有返回网页的正确 html 代码
- python - 除了上一个问题 wxPython 网格
- javascript - Firestore - 根据技能获取用户
- android - AOSP Kotlin 支持
- rust - 如何在检查已经借用的字段时创建一个对自身进行引用计数的引用的值?
- python - 为什么我的 pygame 战争代码显示错误
- java - 用于 Spring Boot 的 AWS Lambda 处理程序未传递 ServletContext