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
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
J'espère que cela résoudra le problème.
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
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.
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.
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.
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&rpcToken=902946799.4541115&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.
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
.