经过进一步调查,我确实对其进行了错误的编码。
以下是我最终得到的代码,供以后参考:
return_payload = base64.b64encode(parse.urlencode(kwargs).encode("utf-8"))
h = hmac.new(secret.encode("utf-8"), return_payload, digestmod=hashlib.sha256)
resp = requests.post(
".../admin/users/sync_sso",
data={"sso": return_payload, "sig": h.hexdigest()}
headers={...}
)
如果您正在进行重定向,请确保对 {"sso"...} 进行 parse.urlencode 编码。