`firebase_tools.firestore .delete` 需要一个令牌,但该令牌从何而来?

Sha*_*baz 6 firebase firebase-authentication google-cloud-functions google-cloud-firestore

我有一个 Firebase 云(可调用)函数,它删除一个 Firestore 文档和所有子实体,包括子集合。我通过稍微修改他们的文档中提供我的 firebase 的功能来做到这一点:https : //firebase.google.com/docs/firestore/solutions/delete-collections

重要的一点在这里:

...
return firebase_tools.firestore
      .delete(path, {
        project: process.env.GCLOUD_PROJECT,
        recursive: true,
        yes: true,
        token: functions.config().fb.token
      })
...
Run Code Online (Sandbox Code Playgroud)

当我从我的网页调用此函数时(在用户验证之后),Web 客户端会抛出一个错误,表明远程函数导致了错误。在 firebase 控制台中,我发现了这个错误:

Unhandled error TypeError: Cannot read property 'token' of undefined

这是指向在上面的代码段的行:token: functions.config().fb.token.fb空值也是如此。

这里发生了什么?

在网上搜索可以告诉我一些有关login:ci命令行的信息,但是尽管我是在我的笔记本电脑上开发它,但在部署应用程序时,将没有命令行。该网站将在 Firebase 托管上。它调用 firebase 云函数。我正在使用 firebase auth 进行用户身份验证(电子邮件/密码)并将数据存储在 firestore 中。

此外,我已经在我的命令行上启用了,因为我可以做得firebase deploy --only functions很好。我如何确保functions.config().fb不返回空值?

Dou*_*son 7

如果需要,您可以将令牌字符串直接粘贴到代码中,替换functions.config().fb.token. 该页面的作者可能认为您不想这样做,因此他们建议您应该为它创建一个配置项。

如果您不想粘贴它,并且您实际上想要配置函数以从configuration获取该值,则必须使用functions:config:set在命令行上设置配置,如下所示:

firebase functions:config:set fb.token=<YOUR-TOKEN>
Run Code Online (Sandbox Code Playgroud)

再次部署您的函数,以便它可以使用该值。

如果您发现文档令人困惑,我建议您使用页面右上角的“发送反馈”链接。

  • 我从哪里获得这个令牌?它在项目的生命周期内是否保持不变?如果不是,我必须何时以及多久生成此令牌?如果空间允许,这个令牌的用途是什么?到目前为止,我已经能够使用 auth、firestore、函数,而无需此令牌。 (3认同)
  • 这些说明位于您链接的文档代码的注释中。查找有关使用 CLI 的“login:ci”命令的部分。Firebase CLI 文档有更多详细信息:https://firebase.google.com/docs/cli#cli-ci-systems (2认同)
  • 感谢你的帮助。我试图在不了解它在做什么的情况下避免遵循该过程。对我来说,了解 FB 代币的最佳地点是哪里?另外,我做了“login:ci”,它要求我提供谷歌帐户,然后要求权限,然后将我重定向到“http://localhost:9005/....”!显然我在该端口上没有任何服务器,所以我收到了错误。(我正在端口 8000 上通过 `python -m http.serve` 测试我的代码)。甚至“firebaseserve”似乎也服务于端口 5000。 (2认同)