J'ai une application React, et je veux implémenter la fonctionnalité SSO. Mais j'obtiens toujours une erreur de nonce

J’ai déjà vérifié enable discourse connect, spécifié discourse connect url et défini discourse connect secret avec succès.
Sur la page de discourse connect url, je fais ce qui suit :

function rediretUserToDiscourse(user) {
        const url = new URL(window.location)
        const searchParams = new URLSearchParams(url.search);
        const ssoValue = searchParams.get("sso");
        const decodedSSOValue = window.atob(ssoValue);
        const queryParams = decodedSSOValue.split("&");

        let nonce = null;
        for (let param of queryParams) {
            const [key, value] = param.split("=");
            if (key === "nonce") {
                nonce = value;
                break;
            }
        }

        if (user) {
            const payload = `nonce=${nonce}&name=${user.username}&username=${user.username}&email=${user.email}&external_id=${user.id}&avatar_url=${user.avatar}`;

            const encodedPayload = window.btoa(JSON.stringify(payload));
            const secret = "discourse_connect_secret";

            hmac(encodedPayload, secret, HmacAlgorithms.HmacSHA256, Encoders.hex)
                .then(signature => {
                    if (signature) {
                        const discourseLoginURL = `https://community.mydomaine.co/session/sso_login?sso=${encodedPayload}&sig=${signature}`;
                        window.location.href = discourseLoginURL;
                    }
                });
        }
    };

Tout fonctionne parfaitement (la signature est valide et cela me redirige vers Discourse). Mais je continue de recevoir l’erreur suivante : Nonce is incorrect, was generated in a different browser session, or has expired. J’ai passé des heures à chercher une solution ici, sur Google et sur ChatGPT (pourquoi pas :p) et je n’ai toujours pas trouvé de solution.

Quelqu’un sait comment je peux résoudre ce problème s’il vous plaît ?