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 à:
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?
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.
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.
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
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
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.
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)
});
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
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