J'ai créé l'authentification unique Google en suivant les étapes décrites dans https://developers.google.com/identity/sign-in/web/sign-in
La connexion fonctionne comme un charme, mais lorsque j'essaie d'intégrer la déconnexion conformément à l'article dans le lien
j'obtiens l'erreur javascript suivante dans la console
Uncaught TypeError: Impossible de lire la propriété 'getAuthInstance' de Undefined
Et ma fonction de sortie ressemble à
<script>
function signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
</script>
et mon signe ressemble à
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId());
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
}
Est-ce que signIn et signOut sont utilisés sur la même page? Div g-signin2 se charge et entre gapi.auth2, de sorte que cela devrait fonctionner aussi longtemps que ceux-ci se trouvent 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 actuel):
<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>
Vérifiez: https://developers.google.com/identity/sign-in/web/reference#gapiauth2getauthinstance
et en particulier cette partie:
gapi.auth2.getAuthInstance()
Renvoie l'objet GoogleAuth. Vous devez initialiser l'objet GoogleAuth Avec
gapi.auth2.init()
avant d'appeler cette méthode.
Pour moi, le problème est que je n’ai pas appelé gapi.auth2.init () premier
J'ai eu le même problème et semble que j'ai trouvé la solution pour moi et je pense que cela devrait être le cas.
vous devriez avoir un appel de méthode comme ça, au bas du script, comme moi, ci-dessous:
gapi.load("client", initAuth);
cela devrait être modifié comme
gapi.load("client:auth2", initAuth);
et cela devrait fonctionner (au moins travaillé pour moi).