web-dev-qa-db-fra.com

Impossible de charger les informations d'identification par défaut? (Didacticiel Node.js Google Compute Engine)

SITUATION:

Je suis ce tutoriel: https://cloud.google.com/nodejs/tutorials/bookshelf-on-compute-engine

Tout fonctionne bien jusqu'à ce que je fasse npm start et allez à:

http: // localhost: 808

Je rencontre le texte suivant sur la page blanche:

Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.

Ce qui n'a aucun sens puisque j'utilise OAuth. J'ai suivi le lien et lu la page, mais je n'ai pas de GOOGLE-APPLICATION-CREDENTIALS sur le terrain n’importe où, et rien dans le didacticiel.


QUESTION:

Pourriez-vous s'il vous plaît reproduire les étapes et me dire si vous obtenez le même résultat?

(prend 5 minutes)

Si non, qu'est-ce que j'aurais pu faire de mal?

24
Coder1000

Oui, j'ai eu la même erreur. C'est gênant parce que les documents de Google Cloud Platform pour leur didacticiel de bibliothèque "pour commencer" ne le mentionnent nulle part. Ce qui signifie que tout nouveau développeur ayant essayé ce tutoriel verra cette erreur.

Lisez ceci: https://developers.google.com/identity/protocols/application-default-credentials

J'ai résolu ce problème en exécutant: gcloud auth application-default login

Cela vous obligera à vous connecter et ensuite, vous utiliserez cette authentification avec un code local.

82
newbreedofgeek

Il y a 2 solutions à ce problème. Une option, comme mentionné par d'autres, est d'utiliser gcloud auth application-default login

La deuxième option consiste à définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS. Il doit pointer sur un fichier qui définit les informations d'identification. Pour obtenir ce fichier, vous devez suivre ces étapes:

Accédez à la page Informations d'identification de la console API.

Dans le menu déroulant du projet, sélectionnez votre projet.

Sur la page Informations d'identification, sélectionnez la liste déroulante Créer des informations d'identification, puis sélectionnez Clé du compte de service.

Dans la liste déroulante Compte de service, sélectionnez un compte de service existant ou créez-en un.

Pour le type de clé, sélectionnez l'option Clé JSON, puis sélectionnez Créer. Le fichier est automatiquement téléchargé sur votre ordinateur.

Placez le fichier * .json que vous venez de télécharger dans un répertoire de votre choix.

Ce répertoire doit être privé (vous ne pouvez laisser personne y accéder), mais accessible au code de votre serveur Web.

Définissez la variable d’environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin du fichier JSON téléchargé.

Voir https://developers.google.com/identity/protocols/application-default-credentials pour plus de détails.

9
Caner
  1. Créez une clé de compte de service en utilisant et téléchargez le fichier json. https://console.cloud.google.com/apis/credentials/serviceaccountkey

  2. Ajoutez ceci à votre fichier ENV

    GOOGLE_APPLICATION_CREDENTIALS = "<PATH_TO_SERVICE_ACCOUNT_JSON_FILE>"

Par exemple:

GOOGLE_APPLICATION_CREDENTIALS=/Users/hello/Documents/ssh/my-10ebbbc8b3df.json
5
Bira

Si vous exécutez l'application localement, le gcloud beta auth application-default login La commande devrait suffire à acquérir les informations d'identification locales (j'ai mis à jour le tutoriel pour le dire).

Lors de l'exécution de l'application sur Google Compute Engine, si l'instance de Compute Engine a été créée avec les étendues appropriées (cloud-platform devrait suffire), l'application s'authentifiera automatiquement avec les API de Google Cloud Platform sans aucun travail supplémentaire de votre part.

4
jdobry

utilisez ceci pour résoudre votre problème. cela fonctionne réellement: - il suffit de mettre le paramètre credential et de faire référence à votre clé.

const serviceAccount = require('../key.json');
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
});
1
MAITRAIYA MALI

Je fournis une autre façon qui est de définir les informations d'identification manuellement. Pour le développement local et l'exécution sur GCP, tel que Cloud Function, Compute Engine.

Vous pouvez utiliser un compte de service et accorder à ce compte les autorisations nécessaires. par exemple. Administrateur Cloud Trace

Ensemble private_key, client_email et projectId options pour toute bibliothèque client GCP. Vous pouvez obtenir ces options à partir du fichier json du compte de service.

Par exemple, j'utilise la bibliothèque cliente Cloud Trace Node.js dans mes fonctions cloud.

Avant de définir credentials et projectId, j'ai eu cette erreur:

Erreur: erreur inattendue lors de l'acquisition des informations d'identification par défaut de l'application: impossible de charger les informations d'identification par défaut. Accédez à https://developers.google.com/accounts/docs/application-default-credentials pour plus d'informations. à GoogleAuth. (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:248:31) à l'étape (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js: 47:23) à object.next (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:28:53) à accomplie (/ srv/node_modules/google-auth-library/build/src/auth/googleauth.js: 19: 58) à l'adresse process._tickDomainCallback (internal/process/next_tick.js: 229: 7)

Vous pouvez passer les credentials et projectId en tant que variables d’environnement. Après avoir défini credentials et projectId, l'erreur disparaît.

const tracer = require('@google-cloud/trace-agent').start({
    samplingRate: 0,
    bufferSize: 1,
    credentials: {
      client_email: process.env.CLIENT_EMAIL,
      private_key: process.env.TRACE_AGENT_ADMIN,
    },
    projectId: process.env.X_GOOGLE_GCLOUD_PROJECT || process.env.PROJECT_ID,
  });

X_GOOGLE_GCLOUD_PROJECT est une variable d'environnement intégrée pour l'exécution de la fonction cloud

0
slideshowp2

Allez ici: https://firebase.google.com/docs/admin/setup#initialize_the_sdk et suivez les instructions pour créer une clé privée. Ensuite, après avoir téléchargé votre invite, appuyez sur la commande Ouvrir dans le répertoire du projet et exécutez la commande suivante:

 set GOOGLE_APPLICATION_CREDENTIALS=C:\YOUR-PATH\YOUR-KEY.json
0
HMaziad