web-dev-qa-db-fra.com

L'API de connexion Google se bloque avec une erreur non interceptée

J'utilise le client JavaScript de connexion Google pendant des mois sans problème. Mais récemment, lorsque l'utilisateur tapait sur le bouton de connexion à partir d'une application Web ajoutée à l'écran d'accueil, la fenêtre contextuelle de connexion se bloquait sans afficher de contenu.

Lors du débogage via le débogage distant, une erreur s'affiche dans le volet de la console:

Uncaught Failed to get parent Origin from URL hash!

provient de 4188232449-v2-idpiframe.js: 136 (javascript chargé en interne par google library).

Je suis sûr que ce n'est pas une erreur de programmation/configuration car la même webapp fonctionnait auparavant pendant des mois sans problème, et je n'ai modifié aucun code.

J'ai essayé la recherche Google pour ce problème particulier et parcourez la documentation Google pour toute modification récente de l'API de connexion Google sans aucune chance.

Est-ce un bug de la bibliothèque client Javascript de l'API Google, un problème de la récente mise à jour du navigateur Chrome sur Android, ou il y a des changements dans l'utilisation de l'API que je ne connais pas encore?

La bibliothèque utilisée est https://apis.google.com/js/platform.js

C'est init param pour gapi.auth2.init ():

{
  client_id: GAPI_CID,  // defined as constant
  cookiepolicy: 'single_Host_Origin',
  Prompt: 'select_account',
  ux_mode: 'popup',
  fetch_basic_profile: true
}

Tout aperçu sera très apprécié. Je vous remercie.

PS: Ce problème est différent avec ncaught n'a pas réussi à obtenir l'origine parent du hachage d'URL car dans ce cas, le problème est causé par une mauvaise configuration des informations d'identification requises dans la console Google API. Si vous n'avez jamais réussi à intégrer le flux de connexion à votre application, la réponse de ce message peut peut-être vous aider.

Sinon, si vous avez réussi le flux de connexion intégré pendant un certain temps mais un problème récent apparaît soudainement/de manière erratique avec le symptôme d'un écran vide sur une fenêtre pop-up, que vous avez le même problème avec moi.

19
Athelstone

Je peux confirmer que nous rencontrons les mêmes problèmes dans mon entreprise depuis récemment. Cela semble un peu erratique, pas à 100% du temps. Mais pour certains utilisateurs, un certain temps, ils rencontrent une fenêtre de connexion vide avec l'url pointant sur " https://accounts.google.com/o/oauth2/iframe " mais rien ne se passe .

5
sniii

Pas encore une réponse complète, mais cela peut être une solution de contournement raisonnable pour certains. J'ai mis à jour le ux_mode pour utiliser redirect et cela fonctionne partiellement maintenant.

auth2 = gapi.auth2.init({
    client_id: '1234.apps.googleusercontent.com',
    scope: 'profile email',
    ux_mode: 'redirect',
    redirect_uri: 'https://blahblah.io/oauth2callback'
})

REMARQUE: il semble redirect_uri est obligatoire, contrairement aux documents de Google. Ce n'est pas un remplacement parfait, mais il résout le "hachage d'URL!" Erreur

Cette article de blog et le dépôt Git pourraient également être utiles pour quiconque essaie d'utiliser redirect

Mon application électronique a commencé à échouer aujourd'hui pour la même raison. J'ai beaucoup débogué et je pense avoir trouvé la raison, mais je ne sais pas comment le résoudre, pourquoi cela s'est produit, ou si c'est la faute de l'électron ou de Google.

Dans mon application électronique, j'ai 2 webviews, un pour le contenu principal et un autre pour les boîtes de dialogue popup de Google.

Ainsi, lorsque Google doit ouvrir l'authentification, il génère cet IFRAME:

    <iframe id="ssIFrame_google" 
                sandbox="allow-scripts allow-same-Origin" aria-hidden="true" 
                src="https://accounts.google.com/o/oauth2/iframe#Origin=https%3A%2F%2Fxxxx.com&amp;rpcToken=dxxd318480305.4777704" 
                style="... display: none;"></iframe>

N'oubliez pas que l'URL a des paramètres HASH: votre origine et le jeton.

Cependant, lorsque du côté électronique, je capture l'événement de nouvelle fenêtre afin d'ouvrir moi-même l'URL dans une autre vue Web, l'événement auquel je reçois MANQUE les paramètres de hachage:

event { 
  type : "new-window",
  url:"https://accounts.google.com/o/oauth2/iframe",
  .
  .
}

Donc, ce que l'iframe de Google se plaint (je l'ai débogué) est exactement qu'il ne peut pas trouver les paramètres Origin et rpctokenqui devraient être dans les paramètres de hachage.

Pour une raison que je ne comprends pas (je n'ai pas mis à jour électron) le new-window L'événement ne reçoit plus l'URL complète.

En utilisant @howMuchCheeseIsTooMuchCheese réponse ci-dessous, j'ai modifié le flux pour utiliser le rappel de redirection, puis capturer ce rappel moi-même et redémarrer l'application. Ce n'est pas idéal, mais au moins je peux me connecter à mes applications.

2
rupps