gpt4 book ai didi

node.js - 将 Google Cloud Function 作为其他 Google API 上的服务帐户进行身份验证

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:16 25 4
gpt4 key购买 nike

我有一个在 Google Cloud Functions 上运行的 HTTP 触发函数,它使用 require('googleapis').sheets('v4') 将数据写入文档电子表格。

对于本地开发,我通过开发者控制台的 Service Accounts 部分添加了一个帐户。我下载了 token 文件(下面的 dev-key.json)并使用它来验证我对 Sheets API 的请求,如下所示:

var API_ACCT = require("./dev-key.json");
let apiClient = new google.auth.JWT(
API_ACCT.client_email, null, API_ACCT.private_key,
['https://www.googleapis.com/auth/spreadsheets']
);

exports.myFunc = function (req, res) {
var newRows = extract_rows_from_my_client_app_request(req);
sheets.spreadsheets.values.append({
auth: apiClient,
// ...
resource: { values:newRows }
}, function (e) {
if (e) res.status(500).json({err:"Sheets API is unhappy"});
else res.status(201).json({ok:true})
});
};

在我与服务帐户的“电子邮件地址”共享我的电子表格后,例如local-devserver@foobar-bazbuzz-123456.iam.gserviceaccount.com — 成功了!

但是,当我将它部署到 Google Cloud Functions 服务时,我想知道是否有更好的方法来处理凭据?我的代码是否可以自动验证自身而无需将 JWT key 文件与部署捆绑在一起?

我注意到在我的函数运行时设置了一个 FUNCTION_IDENTITY=foobar-bazbuzz-123456@appspot.gserviceaccount.com 环境变量,但我不知道如何在 auth 我的 googleapis 调用的值。 code for google.auth.getApplicationDefault 不使用它。

将私有(private) JWT token 与我的 GCF 代码一起上传是否被认为是好的做法?或者我应该以某种方式使用 metadata server 吗?或者是否有一种内置方法可以让 Cloud Functions 向其他 Google API 验证自己的身份?

最佳答案

将凭据与函数部署捆绑在一起是很常见的。只是不要将它们 checkin 您的源代码管理。 Cloud Functions for Firebase samples在需要的地方做这件事。例如,从 Cloud Storage 创建签名 URL 需要管理员凭据,并且 this sample说明了将该凭据保存到文件中以使用函数进行部署。

关于node.js - 将 Google Cloud Function 作为其他 Google API 上的服务帐户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48771037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com