google.auth.GoogleAuth()需要什么keyFile密钥



目标

使用带有firebase函数的googleapi。获取JWT令牌,以便firebase函数可以使用具有域范围委托的服务帐户来授权G Suite API,如目录和驱动器。

问题

path.join((中的内容

什么是__dirname什么是'jwt.keys.json'

在此示例中:https://github.com/googleapis/google-api-nodejs-client/blob/master/samples/jwt.js

  // Create a new JWT client using the key file downloaded from the Google Developer Console
  const auth = new google.auth.GoogleAuth({
    keyFile: path.join(__dirname, 'jwt.keys.json'), // <---- WHAT GOES IN path.join()
    scopes: 'https://www.googleapis.com/auth/drive.readonly',
  });

错误

当我运行时

  const auth = new google.auth.GoogleAuth({
    keyFile: path.join(__dirname, "TEST"), // <-- __dirname == /srv/ at runtime
    scopes: 'https://www.googleapis.com/auth/drive.readonly',
  });

从GCP日志我得到这个错误:

Error: ENOENT: no such file or directory, open '/srv/TEST'

显然TEST无效,但'/srv/有效吗?

什么是keyFile,一个文件路径?凭证?

另一个例子

https://github.com/googleapis/google-api-nodejs-client#service-服务认证

我在这里找到了文档:

https://googleapis.dev/nodejs/google-auth-library/5.10.1/classes/JWT.html

如果不希望包含文件,则可以在请求授权时使用keykeyIdemail提交凭据。

您似乎对它的工作原理有很多疑问。我强烈鼓励你阅读谷歌认证的基本知识。

JWT是JSON Web令牌的缩写。它是一个标准标准,定义了以JSON格式在各方之间传输信息的安全方式。在您的代码中,"jwt"是一个包含keys属性的类。这里有很多JWT图书馆。有一些常用的包使用Node/Express框架。

__dirname // In Node this is the absolute path of the directory containing the currently executing file.

path.join是一种将不同的路径段连接到一个路径中的方法。

在这里,您使用的是绝对路径,并将一些信息连接到路径的末尾。我不确定jwt.keys.json中包含什么,但在这种情况下,这就是附加到绝对路径末尾的内容。

如果不知道你的项目结构或你指向的是什么,就不可能说出什么是和不是你项目中的有效路径。

keyFilegoogle.auth下的对象中的键(用{key:value}格式表示(。正如您引用的示例代码中所示,该脚本使用google.auth库,并调用一个方法来构造和对象提供的信息,以便为您抽象身份验证过程的其他元素。您向它提供了两条信息:1(keyFile的位置,可能是凭据;2(您允许的范围或权限集。在该示例中,它是对驱动器的只读访问。

EDIT:调用服务用来对JWT进行签名的私钥文件。

相关内容

  • 没有找到相关文章

最新更新