Avait le même problème. Semble navigateur (s) (ou au moins chrome) va bloquer tout appel "window.open" qui a été invoqué pas dans le cadre d'une interaction de l'utilisateur.
Référez-vous à here pour une explication plus détaillée.
__
Je l'habitude d'avoir ce code suivant à l'intérieur écouteur d'événement click:
gapi.load('auth2', function() {
var auth2 = gapi.auth2.init({
client_id: '.apps.googleusercontent.com',
fetch_basic_profile: true,
scope: 'profile'
});
auth2.signIn()
.then(function() {
var profile = auth2.currentUser.get().getBasicProfile();
...
})
.catch(function(err) { ... });
});
Notez la façon asynchrone de chargement 'de auth2', qui est la façon dont Google docu dit.
je l'ai changé:
// way earlier, before click event can happen
// we call the gapi.load method.
gapi.load('auth2', function() {});
Puis, à l'intérieur gestionnaire d'événements de clic, nous pouvons faire:
var auth2 = gapi.auth2.init({
client_id: '.apps.googleusercontent.com',
fetch_basic_profile: true,
scope: 'profile'
});
auth2.signIn()
.then(function() { ... })
.catch(function(err) { ... });
... donc navigateur ne bloque pas la connexion google pop-up
Je souhaite les google docs diraient juste quelles méthodes sont asynchrones ou synchronisées. Totalement pas évident que 'gapi.auth2.init' est sync ... Merci pour la réponse! – Iest