web-dev-qa-db-fra.com

Google Sign-in ne fonctionne pas en mode Incognito

J'ai utilisé Google Sign-in My angular 9. J'utilise Google Sign-in JS API. C'est une erreur d'erreur Les cookies ne sont pas activés dans l'environnement actuel dans Google chrome mode incognito, bien que cela fonctionne bien dans Google chrome. Voici les détails d'erreur.

details: "Cookies are not enabled in current environment."
error: "idpiframe_initialization_failed"

Comprenez que dans le mode Incognito par des cookies tiers par défaut sont désactivés mais quelle est la solution pour cela? J'ai trouvé d'autres sites qui utilisent Google Connexion fonctionne parfaitement dans Google chrome Incognito MODE.

9

Vous utilisez probablement 'ux_mode': 'redirect' qui implique des iframes et des cookies.

Essayez d'utiliser popup mode.

Ps. Vous mentionnez "d'autres sites qui fonctionnent parfaitement" - ils utilisent probablement le côté du serveur d'authentification OAuth2, qui est basé sur les redirections.

PPS. Plus d'infos https://developers.google.com/identity/sign-in/web/troubleShotage Voir "Problèmes connus"

2
Alex

Angulaire n'est que JavaScript dans un navigateur. Donc un utilisateur chargement d'un fichier angular est-il servi une bande de JavaScript à partir de votre serveur. Si ce serveur gère l'authentification avec Google-API, votre utilisateur n'interagit que votre serveur (bien que avec une redirection. se connecter à Google).

Ce flux d'authentification ne nécessite pas de cookies tiers.

Toutefois! Si votre authentification est traitée directement dans le navigateur de l'utilisateur, votre application ne fonctionnera pas si les cookies 3ème partie sont désactivés (comme ils sont en mode Incognito).

Par exemple, j'ai un angular que je serve via github pages. Github sert l'application mais ne fait rien d'autre. Puisque je dois créer un document dans la GDDRIVE de l'utilisateur, je Authentifiez et accédez à leurs ressources dans un client JavaScript. Pour que cela fonctionne de manière sécurisée, les utilisateurs de mon AP doivent autoriser des cookies tiers. Il n'y a pas vraiment un moyen de contourner cela.

Si j'avais un backend pour mon application, l'utilisateur pourrait donner à mon serveur la permission d'accéder à son lecteur Google et qu'aucun cookies tiers ne serait requis. À ce moment-là, ce n'est pas le client Frontend JavaScript (application angulaire) qui accède à la gdrive de l'utilisateur, mais mon serveur.

L'utilisation d'un backend permet un flux d'authentification différent et généralement plus sécurisé. Pour un utilisateur, toutefois, l'expérience utilisateur est la même. C'est pourquoi, dans certaines situations, l'utilisateur doit permettre aux cookies tiers et dans d'autres, ils ne le font pas.

En général, vous pouvez sécuriser un serveur beaucoup mieux que vous ne pouvez faire confiance à un système/navigateur d'un utilisateur à sécuriser. Si la sécurité est une préoccupation, vous devez vraiment faire des appels d'API d'un serveur plutôt que de l'intérieur d'un navigateur. Cela devrait également résoudre votre problème.

2
Mrk Sef