Popup bloquant l'autorisation gdrive en chrome

Donc, le problème est que popup bloquant la fenêtre ouverte, même si cela se fait par une action de l'utilisateur, cliquez par exemple.

gapi.auth.authorize({ client_id: this.client_id, scope: this.scopes, access_type: 'online', immediate: immediate }, function(authResult) { console.log(authResult) }); 

Si j'ouvre simplement la fenêtre sur l'utilisateur, cliquez ici:

 $('.some').click(funciton(){ window.open(someurl) }) 

Ça marche bien, mais si je l'ai fait jeter le gdrive api (gapi.auth.authorize), ce blocage de toute façon.

Un must, je ne peux pas forcer les utilisateurs à bloquer le blocage des popap. J'espère que quiconque a maintenant résolu cela :), merci

Essaye ça:

Inclure un événement onload dans votre appel à client.js

<script type="text/javascript" src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

Appelez gapi.auth.init à partir de la fonction Onload:

function handleClientLoad() { window.setTimeout(gapi.auth.init,1); }

Dans votre configuration de configuration autorisée immédiate: false.

Vérifiez que 1. soit inférieur à 2. dans le flux de la page.

Les fenêtres contextuelles qui ne proviennent pas des événements utilisateur seront bloquées en fonction des paramètres de votre navigateur. Vous pouvez essayer de définir immédiatement à faux:

 gapi.auth.authorize({ client_id: this.client_id, scope: this.scopes, immediate: false }, function(authResult) { console.log(authResult) }); 

Vous pouvez utiliser ce code pour actualiser le jeton d'accès après avoir autorisé l'application.

Ajoute simplement une référence https://developers.google.com/api-client-library/javascript/reference/referencedocs

Gapi.auth.init (rappel) Initialise la fonction d'autorisation. Appelez ceci lorsque le client charge pour éviter que les bloqueurs de fenêtres contextuelles bloquent la fenêtre d'authentification sur les appels gapi.auth.authorize.

Ps: vote up requiert 15 réputation … alors je ne pouvais pas voter sur la réponse de Ben 🙂

Le premier appel à gapi.auth.authorize peut déclencher des bloqueurs contextuels. La meilleure façon d'éviter cela est de configurer une action déclenchée par l'utilisateur qui appelle gapi.auth.authorize avec un paramètre immédiat: faux.

Cité à partir de la documentation api: https://developers.google.com/api-client-library/javascript/features/authentication#popup