2017-08-10 2 views
1

Après beaucoup de googler n'a pas trouvé la solution comment attraper erreur de fenêtre bloqueur de pop-up pour google auth2Erreur détect: « popup_blocked_by_browser » pour Google auth2 en javascript

obtenir une erreur dans l'erreur de la console: « popup_blocked_by_browser ». tout ce que je veux faire est de dire à l'utilisateur que la fenêtre contextuelle doit être activée pour auth.

Les exemples utilisant window.open() ne sont pas bons, car ils ouvrent une fenêtre inutile. Comme je vois beaucoup de gens à la recherche de cela.

Un conseil?

Répondre

0

Enfin !! La méthode signIn() utilise JS Promise. Donc, le code peut être utilisé est:

gapi.auth2.getAuthInstance().signIn().then(function(){}, function(error){ if (error) alert('please allow popup for this app')}) 

Espérons que cela aidera!

1

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

+0

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