相关疑难解决方法(0)

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

情况:

我按照本教程操作: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分钟)

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

javascript node.js google-compute-engine google-cloud-platform

29
推荐指数
7
解决办法
3万
查看次数

通过 nodejs 使用不记名令牌进行谷歌云身份验证

我的客户有一个在 Google Cloud Run 上运行的 GraphQL API。

我收到了一个用于身份验证的服务帐户以及对 gcloud 命令行工具的访问权限。

像这样使用 gcloud 命令行时:

gcloud auth print-identity-token
Run Code Online (Sandbox Code Playgroud)

我可以生成一个令牌,该令牌可用于向 api 发出发布请求。这有效,我可以从邮递员、失眠症和我的 nodejs 应用程序成功地向 api 发出请求。

但是,当我将 JWT 身份验证与“googleapis”或“google-auth”npm 库一起使用时,如下所示:

var { google } = require('googleapis')

let privatekey = require('./auth/google/service-account.json')

let jwtClient = new google.auth.JWT(
  privatekey.client_email,
  null,
  privatekey.private_key,
  ['https://www.googleapis.com/auth/cloud-platform']
)

jwtClient.authorize(function(err, _token) {
  if (err) {
    console.log(err)
    return err
  } else {
    console.log('token obj:', _token)
  }
})
Run Code Online (Sandbox Code Playgroud)

这将输出一个“承载”令牌:

token obj: {
  access_token: 'ya29.c.Ko8BvQcMD5zU-0raojM_u2FZooWMyhB9Ni0Yv2_dsGdjuIDeL1tftPg0O17uFrdtkCuJrupBBBK2IGfUW0HGtgkYk-DZiS1aKyeY9wpXTwvbinGe9sud0k1POA2vEKiGONRqFBSh9-xms3JhZVdCmpBi5EO5aGjkkJeFI_EBry0E12m2DTm0T_7izJTuGQ9hmyw',
  token_type: 'Bearer',
  expiry_date: 1581954138000,
  id_token: undefined,
  refresh_token: 'jwt-placeholder'
}
Run Code Online (Sandbox Code Playgroud)

然而,这个不记名令牌不能像上面那样工作,并且在发出与 …

google-api-nodejs-client google-cloud-platform gcloud google-cloud-run

3
推荐指数
1
解决办法
2896
查看次数