Client.py; get_token(self, code, code_verifier): return json.loads(token_response.read()) Should be: return json.loads(token_response.read().decode('utf-8')) It helps as some response value could be byte encoded.