TypeError: объект JSON должен быть str, bytes или bytearray, а не list - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь декодировать id_token, используя python / jwt

import urllib.request
from authlib.jose import jwt
import jwt
from jwt.algorithms import RSAAlgorithm
import json

r='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImp0aSI6ImFkOWYwNTBmLTY3NWMtNDM1Yi04Yjg4LTQ4YmU2ZTc2ZTM1OCIsImlhdCI6MTU3MjYxNzUzNiwiZXhwIjoxNTcyNjIxMTM2fQ.wCs-4FxR6FPLRpjvbL_zkv_88yvx4PJgRnOo9PVisXs'

url = 'https://dev-297076.oktapreview.com/oauth2/aush9prq3i2F4fAwq0h7/v1/keys'

r = urllib.request.urlopen(url)

str_response = r.read().decode('utf-8')

obj = json.loads(str_response)['keys']

obj2 = json.dumps(str_response)

public_key = RSAAlgorithm.from_jwk(obj)
decoded = jwt.decode(IDjwt, public_key, algorithms='RS256')

Ошибка:

Traceback (most recent call last):
  File "C:/Programs/Python/Python37-32/jwt_test1.py", line 18, in <module>
    public_key = RSAAlgorithm.from_jwk(obj)
  File "C:\Programs\Python\Python37-32\lib\site-packages\jwt\algorithms.py", line 252, in from_jwk obj = json.loads(jwk)
  File "C:\Programs\Python\Python37-32\lib\json\__init__.py", line 341, in loads raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not list

Любая помощь очень ценится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...