【问题标题】:NodeJS Google Cloud Service Account Bearer TokenNodeJS 谷歌云服务账户不记名令牌
【发布时间】:2021-11-05 05:42:58
【问题描述】:

我正在尝试获取 Google 服务帐户的授权持有者令牌,以便进行 REST API 调用。我得到的服务帐号 JSON 密钥如下所示:

{ 
    "type": "service_account",
    "project_id": "sa-12345",
    "private_key_id": "12345abc",
    "private_key": "-----BEGIN PRIVATE KEY-----\n12345abc\n12345abc\n=\n-----END PRIVATE KEY-----\n",
    "client_email": "sa@sa12345-12345.iam.gserviceaccount.com",
    "client_id": "12345",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/sa%40sa-12345.iam.gserviceaccount.com"
  }

有没有办法在 NodeJs 中实现这一点?我无法使用 Google SDK,因为我只收到 URL 作为输入,并且仅基于该信息使用 SDK 需要从 url 映射到 sdk 库(计算、存储等)

【问题讨论】:

  • 是的,这可以在没有 Google SDK 的情况下完成,但需要加密库来提供 SHA256withRSA 签名。我不明白您关于将 URL 映射到 SDK 库的评论。注意:您问题中的数据结构称为服务帐户 JSON 密钥。使用该字词为您的问题获得更好的搜索结果。
  • 您能否更详细地解释一下您的意思:“我无法使用 Google SDK,因为我收到的只是 URL 输入”?

标签: node.js google-cloud-platform


【解决方案1】:

Node.js quickstart 向您展示了如何使用 OAuth2 凭据向 Google API 进行身份验证。该示例适用于 Drive API,但任何 Google API 都可以遵循相同的过程。

OAuth 2.0 凭据由应用程序类型(Web 服务器、桌面等)创建。请参阅docs 了解更多信息。

在您的情况下,因为您想使用服务帐户。您必须构建 JWT 并将其交换为访问令牌。

请参阅以下文档以获取参考和示例:

【讨论】:

  • 此答案中的链接不会从服务帐户创建凭据。该链接用于使用 OAuth 流程从用户身份创建凭据,例如使用浏览器登录。因此,它没有回答问题。
猜你喜欢
  • 2021-02-23
  • 2016-07-19
  • 2020-06-01
  • 1970-01-01
  • 2022-08-05
  • 2013-06-15
  • 2013-01-28
  • 1970-01-01
  • 2014-01-16
相关资源
最近更新 更多