web-dev-qa-db-fra.com

Erreur de connexion Google: "popup_closed_by_user"

Après avoir configuré et exécuté avec mon propre identifiant client, je passe par le processus de connexion et sélectionne le compte google nécessaire dans la fenêtre contextuelle.

Une fois cette option sélectionnée, la connexion échoue et l'erreur dans la console est:

err = {error: "popup_closed_by_user"}

quelqu'un peut-il m'aider à résoudre ce problème

8
Bhrungarajni

Si vous testez contre localhost avec le port alors nous devrions add port number dans la console développeur de Google sur Section des origines JavaScript autorisées comme ci-dessous

http: // localhost: 30

J'espère que cela résoudra le problème.

7
Raja Jaganathan

Essayez de vider le cache de votre navigateur.

Dans Chrome: Paramètres → Avancé → Effacer les données de navigation → Images et fichiers mis en cache

6
Craicerjack

Même moi, j'ai rencontré les mêmes problèmes lorsque je veux me connecter en utilisant angular4-social-login. C'est à cause des cookies et des paramètres contextuels du navigateur. Cela fonctionnera dans IE sans erreurs. Dans Chrome vont aux paramètres de contenu dans ce qui modifient les paramètres des cookies et autorisent les fenêtres contextuelles. Ensuite, videz le cache et rechargez. l'application.

3
harsha

J'ai un même problème, après avoir ajouté le numéro de port à l'URL dans la console de développeur Google et vider le cache de la page actuelle, tout fonctionne parfaitement.

enter image description here

2
Hoang Duong

Vérifiez que votre méthode onsuccess ne génère aucune erreur.

Dans mon cas, tous les échecs de la méthode onsuccess tombaient dans onfailure avec { error: "popup_closed_by_user" } argument, sans aucun message d'erreur dans la console devtools.

0
Kris Ku

J'ai eu le même problème avec l'authentification Firebase, mais dans mon cas, localhost était déjà présent dans ma configuration. J'avais également besoin d'ajouter spécifiquement mon adresse IP locale (pour les tests sur mobile) à la liste des domaines autorisés.

0
Scrimothy

Après le chargement du script ('//apis.google.com/js/platform.js'), dans le DOM sera également inséré iframe, par exemple:

<body>
  ...
  <iframe aria-hidden="true" id="ssIFrame_google" sandbox="allow-scripts allow-same-Origin" src="https://accounts.google.com/o/oauth2/iframe#Origin=http%3A%2F%2Flocalhost%3A4200&amp;rpcToken=902946799.4541115&amp;clearCache=1" style="position: absolute; width: 1px; height: 1px; left: -9999px; display: none;"></iframe>
</body>

Au début, je ne comprenais pas pourquoi Google faisait cela, alors je viens de supprimer cet élément:

const iframeElem = document.getElementById('ssIFrame_google');
if (iframeElem) {
  iframeElem.remove();
}

mais lorsque j'ai atteint le stade du traitement de la réponse concernant l'authentification réussie, j'ai rencontré l'erreur décrite par vous: popup_closed_by_user.
Lorsque j'ai commenté mon code pour supprimer iframe, la connexion a réussi.

-
Je peux supposer que votre navigateur filtre le contenu et supprime cet iframe.

0
ZoomAll

Modifiez le numéro de port et réexécutez l'application. Pour modifier le numéro de port, vous devez mettre à jour le numéro de port sous package.json fichier:

"scripts": {
    "start": "set PORT=3006 && react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
 }

Remarque: Ici, le numéro de port est remplacé par 3006.

Maintenant, exécutez l'application en utilisant npm start.

0
suresh