无法加载默认凭据?(Node.js Google Compute Engine教程)

Cod*_*000 29 javascript node.js google-compute-engine google-cloud-platform

情况:

我按照本教程操作:https://cloud.google.com/nodejs/tutorials/bookshelf-on-compute-engine

一切正常,直到我npm start去,并去:

HTTP://本地主机:8080

我在空白页面上遇到以下文字:

Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information.
Run Code Online (Sandbox Code Playgroud)

因为我使用OAuth,这没有任何意义.我按照链接阅读了页面,但我没有任何GOOGLE-APPLICATION-CREDENTIALS字段,在教程中没有任何内容.


题:

您能否重现这些步骤并告诉我您是否得到相同的结果?

(需要5分钟)

如果没有,我可能做错了什么?

new*_*eek 98

是的,我有同样的错误.令人讨厌的是因为谷歌云平台文档的"入门"书架教程在任何地方都没有提到这一点.这意味着尝试本教程的任何新开发人员都会看到此错误.

请阅读:https: //developers.google.com/identity/protocols/application-default-credentials

我通过运行修复此问题: gcloud auth application-default login

这将使您登录,之后您在本地编码将使用该身份验证.

  • 设置process.env.GOOGLE_APPLICATION_CREDENTIALS ="<PATH_TO_SERVICE_ACCOUNT_JSON_FILE>"为我工作. (11认同)
  • 要在这些教程中使用gloud CLI,您需要在CLI级别配置默认应用程序.你可能错过了这一步.我确定你已经在GCP中创建了一个"Project",拿走了ProjectID并运行它:`gcloud config set project [YOUR_PROJECT_ID]`.这将配置您的gloud CLI以使用正确的项目.请访问:https://cloud.google.com/nodejs/getting-started/tutorial-app (4认同)

Tal*_*Tal 19

我面临着同样的问题。它通过以下命令修复。

gcloud auth application-default login
Run Code Online (Sandbox Code Playgroud)

它将默认的 gcloud 云凭据存储在您的系统上并使用相同的凭据。


Can*_*ner 12

这个问题有2个解决方案.其他人提到的一种选择是使用gcloud auth application-default login

第二个选项是设置环境变量GOOGLE_APPLICATION_CREDENTIALS.它应指向定义凭据的文件.要获取此文件,您需要按照以下步骤操作:

转到API控制台凭据页面.

从项目下拉列表中,选择您的项目.

在"凭据"页面上,选择"创建凭据"下拉列表,然后选择"服务帐户密钥".

从"服务帐户"下拉列表中,选择现有服务帐户或创建新帐户.

对于Key type,选择JSON键选项,然后选择Create.该文件会自动下载到您的计算机.

将刚刚下载的*.json文件放在您选择的目录中.

此目录必须是私有的(您不能让任何人访问此目录),但可以访问您的Web服务器代码.

将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为下载的JSON文件的路径.

有关详细信息,请参阅https://developers.google.com/identity/protocols/application-default-credentials

  • 路径应该类似于“C:\Users\CheeWei.Choy\Desktop\OCR\Google-Vision-Api”或只是“Google-Vision-Api.json”@Caner (2认同)

Bla*_*nka 7

我收到此错误是因为最初我喜欢以下内容:

var admin = require("firebase-admin");
admin.initializeApp(); // I didnt add anything because firebaserc file include appName
Run Code Online (Sandbox Code Playgroud)

当我部署函数时它有效,但在serve. 所以这就是我解决它的方法:

  • 转到 firebase项目设置(单击侧面导航中的设置图标)。
  • 单击服务帐户
  • 从选择您的专业版中复制admin sdk 配置片段。朗。

前(node.js):

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://your-domain.firebaseio.com"
});
Run Code Online (Sandbox Code Playgroud)
  • 现在我们需要添加serviceAccountKey.json文件。
  • 单击右上角的管理服务帐户权限
  • 现在,您将看到您的项目的服务帐户,在表中找到具有列名称名称和值firebase-adminsdk 的行,在该行中单击操作点并选择创建密钥
  • 从弹出对话框中选择密钥类型json并按创建按钮。
  • 您将提示下载文件,将其下载到项目中的函数目录(您可以根据需要自定义它,如果您推送到 github,请确保忽略该文件)。
  • 现在,如果您将它保存到您所在的同一目录中initializeApp(),请访问该文件,例如:(./socialape-15456-68dfdc857c55.json在我的情况下,两个文件都位于:functions/index.js并且functions/services.sonfunctions目录和index.js文件中,我初始化了我的firebase adminsdk)。

前(节点.js):

const functions = require('firebase-functions');

var admin = require("firebase-admin");

var serviceAccount = require("./myapp-15456-68dfdc857c55.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://myapp-15456.firebaseio.com"
});
Run Code Online (Sandbox Code Playgroud)

创建.env文件并将您的文件包含在其中并像其他人提到的那样访问它是一个最好的主意。我把那部分留给你。

希望这能帮助地球上的某个人。问候!


小智 6

如果您在本地运行该应用程序,则该gcloud beta auth application-default login命令应足以获取本地凭据(我对本教程进行了更新)。

在Google Compute Engine上运行应用程序时,如果Compute Engine实例是使用适当的范围(cloud-platform应该足够)创建的,则该应用程序将自动使用Google Cloud Platform API进行身份验证,而无需您进行任何额外的工作。

  • gcloud beta auth应用程序默认登录名和gcloud auth应用程序默认登录名之间的区别? (3认同)

Bir*_*ira 5

  1. 使用创建服务帐户密钥并下载json文件。https://console.cloud.google.com/apis/credentials/serviceaccountkey

  2. 将此添加到您的ENV文件

    GOOGLE_APPLICATION_CREDENTIALS = "<PATH_TO_SERVICE_ACCOUNT_JSON_FILE>"

例如:

GOOGLE_APPLICATION_CREDENTIALS=/Users/hello/Documents/ssh/my-10ebbbc8b3df.json
Run Code Online (Sandbox Code Playgroud)


HMa*_*iad 5

转到此处:https : //firebase.google.com/docs/admin/setup#initialize_the_sdk并按照说明创建私钥。然后在您下载了您的私钥后,在项目目录中打开命令提示符并执行以下命令:

 set GOOGLE_APPLICATION_CREDENTIALS=C:\YOUR-PATH\YOUR-KEY.json
Run Code Online (Sandbox Code Playgroud)