如何在 Node.JS Google Cloud 函数中获取访问令牌?

2024-02-09

我在 Google Cloud 上的 Node.JS 中有一个云函数,我需要向 Google 发出 GET 请求,并且它需要一个身份验证令牌。使用curl你可以使用生成一个$(gcloud auth application-default print-access-token)。但这在云实例中不起作用,那么我如何生成一个呢?

部分功能:

exports.postTestResultsToSlack = functions.testLab
  .testMatrix()
  .onComplete(async testMatrix => {

    if (testMatrix.clientInfo.details['testType'] != 'regression') {
      // Not regression tests
      return null;
    }

    const { testMatrixId, outcomeSummary, resultStorage } = testMatrix;

    const projectID = "project-feat1"
    const executionID = resultStorage.toolResultsExecutionId
    const historyID = resultStorage.toolResultsHistoryId

    const historyRequest = await axios.get(`https://toolresults.googleapis.com/toolresults/v1beta3/projects/${projectID}/histories/${historyID}/executions/${executionID}/environments`, {
      headers: {
        'Authorization': `Bearer $(gcloud auth application-default print-access-token)`,
        'X-Goog-User-Project': projectID
      }
    });

经过无数个小时的努力,我在自动完成建议中滚动时偶然发现了答案。 Google 有有关身份验证的文档,但没有提到 Cloud Functions 发出 API 请求所需的内容:

const {GoogleAuth} = require('google-auth-library');

const auth = new GoogleAuth();
const token = await auth.getAccessToken()

const historyRequest = await axios.get(
`https://toolresults.googleapis.com/toolresults/v1beta3/projects/${projectID}/histories/${historyID}/executions/${executionID}/environments`, 
      {
        headers: {
          'Authorization': `Bearer ${token}`,
          'X-Goog-User-Project': projectID
        }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Node.JS Google Cloud 函数中获取访问令牌? 的相关文章

随机推荐

  • PInvoke 返回带有二维数组的结构

    我有定义在的结构c questions tagged c 2b 2bWin32 DLL 如下所示 typedef struct matrix double data int m int n Matrix 并且有一个函数 Matrix get
  • 尝试运行 TensorFlow 时 CUDNN_STATUS_NOT_INITIALIZED

    我已经在带有 Cuda 9 0 和 CuDNN 7 0 5 以及普通 Python 2 7 的 Ubuntu 16 04 上安装了 TensorFlow 1 7 尽管它们的 CUDA 和 CuDNN 示例都运行良好 并且 TensorFlo
  • 如何在C++中输出欧元符号

    我试图为一个计算出租车费用的程序输出一个 Eurosign 然后将其转换为美元或欧元 规范的一部分是我必须输出 Eurosign 我已经尝试过 Unicode 但我没有任何运气 任何帮助将不胜感激 谢谢 这是我的代码 void produc
  • Visual Studio 2012“扩展和更新”“无法连接到远程服务器”

    不幸的是 过去几个月的情况就是如此 我无法安装新的或更新的软件包工具 gt 扩展和更新我尝试了一切 但无法找到原因 我试过了 访问 NuGet 并从 下载包 包管理器控制台 安装包 SUCCESS 使用 Web 浏览器访问存储库 Visua
  • Boost asio,单个 TCP 服务器,多个客户端

    我正在创建一个 TCP 服务器 它将使用 boost asio 它将接受来自许多客户端的连接 接收数据并发送确认 问题是我希望能够接受所有客户 但我一次只想与一个客户合作 我希望所有其他事务都保留在队列中 Example 客户端1连接 客户
  • 使用 spring-data-jpa 自定义 ItemReader

    我正在使用现有实体和存储库创建一个 Spring 批处理项目 我需要使用自定义ItemReader用于使用现有 jpa 存储库读取数据的作业 定制阅读器 public class InMemoryReader implements Item
  • 在 INSERT 之后使用 OUTPUT 将标识列的值获取到(非表值)变量中

    给出以下简单的测试表 CREATE TABLE dbo Test Id bigint IDENTITY 1 1 NOT NULL Name varchar 50 NULL 我想在之后将标识列的值放入标量变量中INSERT使用OUTPUT条款
  • 使用 $dialog 多次打开同一个对话框

    我创建这个 plnkr http plnkr co edit fdAdDNU9adtYrY9smQvU p preview在回答这个问题时 AngularJS 在对话框中打开控制器 动态加载模板 https stackoverflow co
  • Android 中已弃用 URLEncodedUtils

    URLEncodedUtils在 Android API 22 中已弃用 我可以在这段代码中使用什么来代替 我需要改变URLEncode Utils Format line public String construct return if
  • Winapi :: 获取可用句柄数

    我想创建长时间运行我的程序的测试 并不时输出可用句柄的计数 我怎样才能用一些 WINAPI 函数来做到这一点 这是一篇关于如何调试句柄泄漏的好文章http blogs technet com b yongrhee archive 2011
  • 将 Base64 jpeg 图像传递给 og:image

    我的网站上有在运行时生成的图像 我使用 html 将其显示 img src 现在 我希望 Facebook 获取此图像 但如果我对 og image 元标记执行相同操作 Facebook 调试器会给我一个错误 有什么解决办法吗 当然 我想避
  • 将一系列值映射到另一个值

    我正在尝试找到一种有效的方法将一系列值映射到另一个值 例如 1 9 gt 49 10 24 gt 54 25 49 gt 59 50 74 gt 50 75 99 gt 49 100 150 gt 40 这里的值不遵循任何常规模式 一种解决
  • 由于其保护级别,文本框无法访问[重复]

    这个问题在这里已经有答案了 课堂作业要求我们创建一份简单的能源账单 第一天生成一个 ID 号 我想将其复制到第二个表格 但我不断收到以下信息 错误 CS0122 Form1 idgen 由于其保护级别而无法访问由于我将引用第一种形式中的许多
  • build.gradle 错误:无法创建tastk ':generateLockfiles'。 Flutter项目中但App运行正常

    我的 Flutter 项目中的 build gradle 文件 android build gradle 有错误 该应用程序运行完全正常 但这个错误对我来说仍然不太好 有人遇到过这个问题 错误吗 这是我完整的 build gradle 文件
  • 如何实现对无缓冲通道的非阻塞写入?

    From 有效的行动 https golang org doc effective go html channels 接收器总是阻塞 直到有数据要接收 如果通道未缓冲 则发送方会阻塞 直到接收方收到该值 But 信号 通知 https go
  • NodeJs - esc 不是函数

    我在尝试渲染时遇到了一个奇怪的问题 ejs文件在此特定行 TypeError home me nodeapp app views default page connection ejs 66 64 div class col s12 l8
  • 如何限制pyTelegramBotAPI中少数用户的访问?

    我正在使用远程机器人 https github com eternnoir pyTelegramBotAPI https github com eternnoir pyTelegramBotAPI 创建一个机器人来向其用户发送照片 关键是我
  • 请求对象传递给 Django-Tables2 Tables 类

    假设我们有两个模型 ModelS 和 Model B 我将使用 Django Tables2 从这些模型中创建一个表 在tables py 中 您可以有两个单独的表类 如下 from models import ModelA ModelB
  • Python-social-auth使用Django服务器主机名和监听端口作为redirect_uri

    我正在将 python social auth 与 Django 一起使用 以使用 Oauth2 google oauth2 向 Google 进行身份验证 在我的模板中我使用了一些东西like https github com omab
  • 如何在 Node.JS Google Cloud 函数中获取访问令牌?

    我在 Google Cloud 上的 Node JS 中有一个云函数 我需要向 Google 发出 GET 请求 并且它需要一个身份验证令牌 使用curl你可以使用生成一个 gcloud auth application default p