python - 使用 pyJWT 和 Python 解码 Apple 的 id_token (Signin)
问题描述
如何在 Python 中解码 Apple 在注册过程中发送的 id_token?
我试过(从这里https://stackoverflow.com/a/65909432/984003)
import jwt
decoded = jwt.decode(token, options={"verify_signature": False})
我收到一个错误:
jwt.exceptions.InvalidAudienceError: Invalid audience
如果我将 id_token 复制粘贴到 jwt.io 页面https://jwt.io/中,那么它会正确地将其解码为所有部分(标头、带有 aud、子的有效负载等)所以令牌本身是正确的,我有我需要的所有信息。
解决方案
当我提供预期的 aud 值时,它会起作用。aud 与您第一次调用 Apple 进行登录时提供的 clientId 相同(https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/configuring_your_webpage_for_sign_in_with_apple),与 Apple 控制台中的 Identifier 相同你设置它的地方。
必须有一种方法可以在不提供 aud 的情况下做到这一点,因为这个 wbeage https://jwt.io/可以做到。但是,也许不是在 Python 中......
import jwt
decoded = jwt.decode(token, audience="<your app's>",options={"verify_signature": False})
推荐阅读
- amazon-cloudformation - cloudformation 堆栈使用的 IAM 角色
- android - 从高层次来看,实现从数据库读取锻炼的健身应用程序的最佳方式是什么?
- javascript - 计数器适用于第 1 个帖子,但不适用于第 2 个帖子
- python-3.x - 写出值以在 python 和 lua 脚本之间进行管道传输
- css - 为什么只有某些字体真棒图标通过 css 出现?
- hyperledger-fabric - Hyperledger Composer 如何增加执行超时
- python - 如何在 python 中使用 libxml2 编写 xml 文件?
- javascript - 为什么数字出现在我的多维数组的末尾?
- linux - 编译 GNUTLS 给出 config.status:error: cannot find input file: 'guile/pre-inst-guile.in'
- javascript - 如何重置 setInterval 函数中的值?