109 votes

Comment se déconnecter d'une application où j'ai utilisé OAuth2 pour me connecter avec Google ?

Dans mon application, j'ai implémenté Google signout en utilisant jsapi.

J'ai utilisé l'url https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx pour se connecter à Google, puis https://www.googleapis.com/plus/v1/people/xxxxxx pour obtenir les données de l'utilisateur à partir du profil Google.

J'ai maintenant besoin de déconnecter l'utilisateur de Google en cliquant sur un bouton de mon application. Comment puis-je implémenter cela en JavaScript, ou au moins cela doit demander la page de connexion Google à chaque fois que l'utilisateur se connecte.

J'ai essayé approval_prompt=force mais cela ne semble pas fonctionner.

2voto

Vous pouvez simplement créer un bouton de déconnexion et y ajouter ce lien. Il vous déconnectera alors de l'application et vous redirigera vers le site de votre choix :

https://appengine.google.com/_ah/logout?continue=http://www.YOURSITE.com

il suffit de basculer YOURSITE avec votre site web

1voto

Rahul Sharma Points 109

Ouath rend juste l'instance de Google nulle, donc il vous sort de Google. C'est ainsi que l'architecture est faite. Se déconnecter de Google, si vous vous déconnectez de votre application est un travail sale, mais cela ne peut pas aider si l'exigence stipule la même chose. Par conséquent, ajoutez ce qui suit à votre fonction signOut(). Mon projet était une application Angular 6 :

document.location.href = " https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://localhost:4200 " ;

Ici, localhost:4200 est l'URL de mon application. Si votre page de connexion est xyz.com alors entrez-la.

1voto

Ce code fonctionnera pour se déconnecter

    <script>
      function signOut() 
      {
        var auth2 = gapi.auth2.getAuthInstance();
        auth2.signOut().then(function () {   
        console.log('User signed out.');   
        auth2.disconnect();   
      }); 
        auth2.disconnect();
      } 
    </script>

0voto

Janakiram Points 1

J'espère que nous pouvons y parvenir en stockant le jeton dans la session lors de la connexion et en accédant au jeton lorsqu'il clique sur déconnexion.

    String _accessToken=(String)session.getAttribute("ACCESS_TOKEN");
    if(_accessToken!=null)
    {
        StringBuffer path=httpRequest.getRequestURL();
        reDirectPage="https://www.google.com/accounts/Logout?
        continue=https://appengine.google.com/_ah/logout?
        continue="+path;
    }
    response.sendRedirect(reDirectPage);

0voto

Sean Points 289

Il semble que Google ait récemment cassé quelque chose avec son système de révocation (il a commencé à retourner des erreurs 400 pour nous). Vous devez maintenant appeler

auth2.disconnect() ;

Dans notre cas, nous devons ensuite attendre quelques secondes pour que l'appel de déconnexion soit terminé, sinon le code de connexion sera ré-autorisé avant qu'il ne soit terminé. Il serait bon que google renvoie une promesse à partir de la méthode de déconnexion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X