web-dev-qa-db-fra.com

Erreur d'initialisation Javascript idpiframe sur Google Auth API sur Chrome

J'utilise GSuite et je code une application Web très simple pour utiliser l'API Google Auth, et j'obtiens une exception "idpiframe_initialization_failed".

Maintenant, j'ai le code HTML exact, comme indiqué dans l'exemple de Google: https://developers.google.com/api-client-library/javascript/samples/samples

1) J'ai créé un projet sur Console de développeur Google

2) J'ai configuré l'écran d'autorisation OAUTH

3) J'ai créé l'ID client, en créant des restrictions et une URL de redirection

4) J'ai également créé la clé API

5) Enfin, j'ai activé l'API People, car les services de découverte échouaient lors de la définition du paramètre discoveryDocs.

Avec toutes ces étapes, lorsque j'appelle gapi.client.init, une exception ONLY apparaît dans chrome, je ne comprends pas pourquoi.

Le code d'initialisation de l'API est:

    gapi.client.init({
        apiKey: 'MY_API_KEY',
        discoveryDocs: ["https://people.googleapis.com/$discovery/rest?version=v1"],
        clientId: 'MY_CLIENT_ID.apps.googleusercontent.com',
        scope: 'profile'
    }).then(function (response) {
      // Listen for sign-in state changes.
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);

      // Handle the initial sign-in state.
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
    },function(reason){
        console.log('onerror');
        console.log(reason);
      // Listen for sign-in state changes.
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);

      // Handle the initial sign-in state.
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());

Le code exécute le bloc d'erreur et le message est le suivant:

details: "Failed to read the 'localStorage' property from 'Window': Access is denied for this document."
error:"idpiframe_initialization_failed"

Des idées pourquoi je viens dans cette erreur?

Merci!

15
David Pascual

J'ai rencontré le même problème. Après avoir investi un peu de temps, trouvé la raison. Cette erreur est due au fait que, dans les paramètres Chrome, l'option Bloquer les cookies tiers et les données du site est activée.

Vous pouvez résoudre ce problème en désactivant l'option suivante: .__ ". Pour trouver le paramètre, ouvrez les paramètres Chrome, tapez" Paramètres de contenu "dans la zone de recherche, cliquez sur le bouton Paramètres de contenu et affichez le quatrième élément sous Cookies." Décochez la case "Bloquer les cookies tiers et les données du site".

J'espère que cela vous aidera à résoudre votre problème.

 enter image description here

18
lavleen

Le problème vient de la console API de Google et de la manière dont elle gère la création d'informations d'identification. Cela ne semble fonctionner que lorsque j'y accède via l'URL suivante https://developers.google.com/identity/sign-in/web/sign-in#before_you_begin .__ est un lien qui vous permet de créer votre application et les informations d'identification OAuth. Quand je vais à la console et le crée à travers cet écran, cela ne semble pas fonctionner. Après avoir essayé, recréé et testé à nouveau avec une nouvelle application, j'ai découvert que l'URL que vous ajoutez à Authorized Javascript Origins n'est pas toujours ajoutée. 

Si tout est bon, l'URL devrait être disponible dans la page des informations d'identification see screenshot here

2
Commander Coffee

Dans mon cas, il a fallu que j'attende un peu que Google prenne l'Origine en compte. Je ne peux pas dire exactement combien de temps cela a pris. J'ai attendu ~ 30min. Je me suis ensuite endormi et cela fonctionnait le lendemain matin.

Edit: Ooops, je viens de me rendre compte que j’utilisais http:// et non https://. C'était le problème réel.

1
mbonnin