如何将 Google 应用程序凭据/机密添加到 Vercel 部署?

lea*_*lar 10 vercel

我正在将 Vercel 部署与 NextJS 应用程序一起使用。当我推送到 master 时,部署会自动运行,但我不想将密钥存储在 GitHub 中。我的无服务器功能依赖于我的数据库。在本地运行时,我可以简单地使用 Google 的默认身份验证凭据,但在部署到 Vercel 时这是不可能的。因此,我创建了一个服务帐户以使服务器能够访问。

如何加载服务帐户凭据而不将其密钥本身推送到 GitHub?

lee*_*rob 7

您可以创建一个对象并包含环境变量作为每个对象键的值,而不是使用 JSON 文件的路径。例如:

admin.initializeApp({
  credential: admin.credential.cert({
    client_email: process.env.FIREBASE_CLIENT_EMAIL,
    private_key: process.env.FIREBASE_PRIVATE_KEY,
    project_id: 'my-project'
  }),
  databaseURL: 'https://my-project.firebaseio.com'
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以在 Vercel 的项目设置中添加环境变量。

  • 确保 `private_key` 是一个符合 JSON 的值,方法是用额外的双引号 `FIREBASE_PRIVATE_KEY='"-----BEGIN PRIVATE KEY-----\nXXX\n-----END PRIVATE KEY- ----"'` 并在检索时解析值,如下所示: `JSON.parse(process.env.FIREBASE_PRIVATE_KEY)` 参考:https://github.com/vercel/vercel/issues/749#issuecomment-707515089 (2认同)