情况:
我按照本教程操作:https://cloud.google.com/nodejs/tutorials/bookshelf-on-compute-engine
一切正常,直到我npm start去,并去:
我在空白页面上遇到以下文字:
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
我的客户有一个在 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