SSO と '~' 文字の問題

さらに調査したところ、エンコード方法が間違っていたことが判明しました。

posterity のために、最終的に以下のようになりました。

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 してください。

@sam@david、助けてくれてありがとう!

「いいね!」 3