Maison  >  Questions et réponses  >  le corps du texte

Boucle de redirection infinie sur la connexion en un clic de Google

Je ne trouve aucune documentation sur Google One Tap UX et comment conserver le statut de connexion après la redirection de connexion. J'utilise l'API HTML, veuillez consulter le code ici :

setTimeout(function () {
    let target = document.getElementById('google-signin');
    target.innerHTML = '<div id="g_id_onload" data-client_id="x" data-context="signin" data-login_uri="https://x/account/google/callback" data-auto_select="true" data-itp_support="true"></div>';
    var s = document.createElement("script");
        s.src = 'https://accounts.google.com/gsi/client';
        
        document.head.appendChild(s);
        
        console.log('appended script', s);
    }, 30000);
</script>

Essentiellement, je retarde cette fenêtre contextuelle de connexion de 30 secondes, cette partie fonctionne bien, mais peu de temps après, cela se produit :

  1. La connexion se produit
  2. Redirection effectuée
  3. Le serveur redirige vers la page de référence
  4. Après 30 secondes, le processus recommence

J'aurais pensé que le SDK de Google définirait un cookie quelque part ou quelque chose du genre, mais je suppose que ce n'est pas le cas, ou je devrais gérer l'état de connexion persistant à ma manière. Je veux juste connaître la bonne approche ici.

Ma question est la suivante : Comment Google sait-il si un utilisateur est connecté à l'aide de Google One Tap UX ?

P粉463840170P粉463840170203 Il y a quelques jours424

répondre à tous(1)je répondrai

  • P粉115840076

    P粉1158400762024-03-30 00:31:08

    J'ai trouvé une solution. Google vous permet de placer un cookie appelé data-skip_prompt_cookie="yourcookie" sur une balise div qui ignorera l'invite en un clic si le cookie a une vraie valeur.

    Ce que j'ai fait, c'est que dans le rappel du serveur dans asp.net, j'ai ajouté un cookie à la réponse. Cela garantit que l'invite n'est désactivée qu'une fois que quelqu'un est réellement connecté.

    Response.Cookies.Append(
                "yourcookie", "true");

    Cela garantit que lorsque mon serveur redirige vers la page d'origine, le cookie est là et le clic ne se reproduira plus

    répondre
    0
  • Annulerrépondre