如何在 Python 中解码 Google API 返回的 JWT

问题描述 投票:0回答:2

我当前正在尝试访问 API 返回的 JWT 给出的有效负载中的信息。我已经尝试过官方 jwt 文档中的示例,但似乎没有任何效果。我的目标是从文档中提取姓名和电子邮件,以便我在网页中使用它,请参阅使用 Google JavaScript API 参考登录

我收到了 API 返回的 JWT,但我不知道如何解码它以供我使用。

这是我这部分的所有代码

@app.route("/")
@app.route("/index",methods=["GET","POST"])
def index():
    if request.method == "POST":
        if request.form["credential"]:
            pass

其中 request.form["credential"] 是表单中的 JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9liiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJ V_adQssw5c

如何用Python来完成?我对此很陌生,所以我正在学习:)

python jwt google-signin
2个回答
1
投票

试一试:

import jwt

def decode_jwt(token):
    try:
        decoded = jwt.decode(token, 'secret', algorithms=['HS256'])
        return decoded
    except:
        return None

0
投票

试试这个

`导入json 导入base64

defdecode_jwt_response(凭证): # 将凭证分为三部分:标头、有效负载和签名 部分 = credential.split('.') 有效负载 = json.loads(base64.urlsafe_b64decode(parts[1] + '=' * (-len(parts[1]) % 4)).decode('utf-8'))

return {
    'sub': payload.get('sub'),
    'name': payload.get('name'),
    'given_name': payload.get('given_name'),
    'family_name': payload.get('family_name'),
    'picture': payload.get('picture'),
    'email': payload.get('email')
}

`

© www.soinside.com 2019 - 2024. All rights reserved.