web-dev-qa-db-fra.com

TypeError: gapi.auth2 undefined

J'ai suivi exactement les instructions pour intégrer la connexion Google:

https://developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id

la connexion fonctionne, mais la déconnexion donne une erreur javascript dans la ligne:

var auth2 = gapi.auth2.getAuthInstance ();

L'erreur est:

gapi.auth2 undefined

J'inclus la bibliothèque de la plateforme Google comme indiqué:

    <script type='text/javascript' src='https://apis.google.com/js/platform.js' async defer></script>

Pourquoi ça ne marche pas?

25
Erel Segal-Halevi

SignIn et SignOut sont-ils utilisés sur la même page? Div g-signin2 charge et inits gapi.auth2 donc cela devrait fonctionner tant qu'ils sont sur la même page.

Si signOut se trouve sur une page distincte, vous devez charger et lancer manuellement la bibliothèque gapi.auth2.

Exemple complet (vous devez remplacer YOUR_CLIENT_ID par votre client_id réel):

<html>
<head>
   <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
</head>
<body>
  <script>
    function signOut() {
      var auth2 = gapi.auth2.getAuthInstance();
      auth2.signOut().then(function () {
        console.log('User signed out.');
      });
    }

    function onLoad() {
      gapi.load('auth2', function() {
        gapi.auth2.init();
      });
    }
  </script>
  <a href="#" onclick="signOut();">Sign out</a>

  <script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
</body>
</html>
57
Jarosław Gomułka