小编vic*_*516的帖子

在 Google Cloud Run 中使用默认凭据进行域范围委派

我正在使用自定义服务帐户(使用--service-account部署命令中的参数)。该服务帐户已启用域范围委派,并且安装在 G Apps 管理面板中。

我尝试了这段代码:

app.get('/test', async (req, res) => {
    const auth = new google.auth.GoogleAuth()
    const gmailClient = google.gmail({ version: 'v1' })
    const { data } = await gmailClient.users.labels.list({ auth, userId: 'user@domain.com' })
    return res.json(data).end()
})
Run Code Online (Sandbox Code Playgroud)

如果我在我的计算机上运行它(将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为分配给 Cloud Run 服务的同一服务帐户的路径),它就可以工作,但是当它在 Cloud Run 中运行时,我会收到以下响应:

{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Bad Request",
    "reason" : "failedPrecondition"
  } ],
  "message" : "Bad Request"
}
Run Code Online (Sandbox Code Playgroud)

我看到了针对同一问题的解决方案,但它适用于 Python,我不知道如何使用 Node 库复制该行为

node.js service-accounts google-auth-library-nodejs google-cloud-run

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