Python Auth0:无法通过用户ID通过管理API V2获取用户信息



我通过以下方式获得Auth0管理访问令牌:

conn = http.client.HTTPSConnection("{env.get("AUTH0_DOMAIN")}")
payload = "{"client_id":"id","client_secret":"secret","audience":"https://{env.get("AUTH0_DOMAIN")}/api/v2/","grant_type":"client_credentials"}"
headers = { 'content-type': "application/json" }
conn.request("POST", "/oauth/token", payload, headers)
res = conn.getresponse()
data = res.read()
token_json = data.decode('utf-8').replace("'", '"')
token = json.loads(token_json)
AUTH0_ACCESS_TOKEN = token["access_token"]

这是成功的,我得到了管理API访问令牌。

当我试图在回调期间获取用户信息时,问题出现了:

@app.route("/callback", methods=["GET", "POST"])
def callback():
token = oauth.auth0.authorize_access_token()
session["user"] = token
id = session['user']['userinfo']['sub']
payload = ''
conn = http.client.HTTPConnection("{env.get("AUTH0_DOMAIN")}")
headers = { 'authorization': "Bearer {}".format(AUTH0_ACCESS_TOKEN)}
conn.request("GET", f"/api/v2/users/{id}", payload, headers=headers)
res = conn.getresponse()
data = res.read()
user_json = data.decode('utf-8').replace("'", '"')
user_data = json.loads(user_json)

错误发生在最后一行。json.loads产生错误:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

当我检查user_json时,我发现它是空的,这意味着我没有从管理API得到响应。

我做错了什么?是否存在格式错误?我没有使用正确的user_id吗?对于ID,我尝试了session['user']['userinfo']['sub']session['user']['userinfo']['sub'].split('|', 1)[1]来排除ID中的前缀,但仍然得到相同的错误。

我想我发现了在回调中获取用户信息的问题所在。

这个

conn = http.client.HTTPConnection("{env.get("AUTH0_DOMAIN")}")

应该是

conn = http.client.HTTPSConnection("{env.get("AUTH0_DOMAIN")}")

Auth0控制台中的机器对机器应用程序的快速启动指南称使用HTTPConnection,因此可能需要修复。

最新更新