【问题标题】:How do I add Google Application Credentials/Secret to Vercel Deployment?如何将 Google Application Credentials/Secret 添加到 Vercel 部署?
【发布时间】:2020-09-26 02:05:42
【问题描述】:

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

如何加载服务帐户凭据而不将它们自己的密钥推送到 GitHub?

【问题讨论】:

标签: vercel


【解决方案1】:

您可以创建一个对象并包含环境变量作为每个对象键的值,而不是使用 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'
});

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

【讨论】:

  • 这在新版本的 firebase 中不起作用,如果您知道相同的情况可以更新它吗?
  • 这里也一样,你解决了吗?在我看来这是对班级的一些改变,现在它说googleapis__WEBPACK_IMPORTED_MODULE_0__.google.auth.GoogleAuth is not a constructor
【解决方案2】:

除了@leerob 的回答之外,我发现在我的 .env 文件中的 FIREBASE_PRIVATE_KEY 环境变量周围加上引号修复了我在发出请求时一直与 PEM 文件相关的错误。不过,调用标准 firebase 库时,我不需要任何引号。

这是我用来从我的应用访问 Google Cloud Storage API 的配置:

const { Storage } = require('@google-cloud/storage');

const storage = new Storage({ projectId: process.env.FIREBASE_PROJECT_ID,
                              credentials: { client_email: process.env.FIREBASE_CLIENT_EMAIL,
                                              private_key: process.env.FIREBASE_PRIVATE_KEY_WITH_QUOTES
                                            } 
                            })

【讨论】:

    猜你喜欢
    • 2022-12-15
    • 2022-01-02
    • 2022-06-14
    • 2021-08-01
    • 2020-11-08
    • 2022-01-25
    • 2023-01-18
    • 2022-10-07
    • 2022-07-09
    相关资源
    最近更新 更多