【问题标题】:convert APNs auth key to use with PyJWT将 APNs 身份验证密钥转换为与 PyJWT 一起使用
【发布时间】:2019-07-24 01:19:45
【问题描述】:

上下文

我正在使用pyjwt 生成一个 jwt 以将推送通知从 python 后端发送到 APNs(Apple 推送通知服务)。我的后端在标准 GAE (Google App Engine) 实例上运行,因此我必须使用旧版包 pycrypto 和 ecdsa 而不是 pyjwt (docs) 中的 cryptography。

问题

我的auth_key.p8(我从Apple Developer 下载)的格式为-----BEGIN PRIVATE KEY-----,但ecdsa 包预计它的格式为-----BEGIN EC PRIVATE KEY-----。因此我得到以下回溯:

  File "app/venv/lib/python3.7/site-packages/jwt/api_jwt.py", line 65, in encode
    json_payload, key, algorithm, headers, json_encoder
  File "app/venv/lib/python3.7/site-packages/jwt/api_jws.py", line 113, in encode
    key = alg_obj.prepare_key(key)
  File "app/venv/lib/python3.7/site-packages/jwt/contrib/algorithms/py_ecdsa.py", line 44, in prepare_key
    key = ecdsa.SigningKey.from_pem(key)
  File "app/venv/lib/python3.7/site-packages/ecdsa/keys.py", line 189, in from_pem
    privkey_pem = string[string.index(b("-----BEGIN EC PRIVATE KEY-----")):]
ValueError: subsection not found

我的auth_key 似乎是ecdsa 不接受的格式,但我不知道如何解决这个问题。我应该将此auth_key 转换为不同的格式吗?

感谢您的帮助。

【问题讨论】:

  • 你有没有想过这个问题?我遇到了同样的问题。
  • 回顾我的代码,看来我放弃了,决定改用 Firebase。他们提供了一个 python sdk,并自己处理与 APNS 的连接。 firebase.google.com/docs/cloud-messaging

标签: python apple-push-notifications pyjwt


【解决方案1】:

对我来说,这是由于键末尾有换行符造成的。删除换行符后,错误消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 2021-02-17
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多