لدي تطبيق React، وأريد تطبيق ميزة SSO. لكنني دائمًا ما أحصل على خطأ nonce

لقد قمت بالفعل بتحديد enable discourse connect، وحددت discourse connect url وقمت بتعيين discourse connect secret بنجاح.
في صفحة discourse connect url، أقوم بما يلي:

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;
                    }
                });
        }
    };

كل شيء يعمل بشكل مثالي (التوقيع صحيح، ويتم إعادة توجيهي إلى discourse). لكنني ما زلت أتلقى الخطأ التالي: Nonce is incorrect, was generated in a different browser session, or has expired. لقد أمضيت ساعات في البحث عن حل هنا، وعلى جوجل، وعلى ChatGPT (لماذا لا؟ :p) وما زلت لم أجد حلاً.

هل يعرف أي شخص كيفية إصلاح ذلك، من فضلك؟