将Google凭据链接到vercel



我尽了最大努力自己解决了这个问题,但我完全错过了一些东西。

我使用NextJS12和谷歌云翻译的API来转换按钮上的单词。在本地,它运行良好,但一旦我尝试部署到vercel,权限/密钥就会在某个地方出错。

在本地,我有我的key.json,这是我从服务帐户获得的。它只是在我的项目的根。我的.env.local文件引用了该密钥文件。看起来像这个

GOOGLE_APPLICATION_CREDENTIALS=./<projectid&key>.json

但当我试图翻译时,我遇到了一个错误。'Request failed with status code 500'

我的翻译端点看起来像这样,我几乎是从谷歌的小教程中复制的。

import { NextApiRequest, NextApiResponse } from "next";
export default async (req: NextApiRequest, res: NextApiResponse) => {
const translationClient = new TranslationServiceClient();
const projectId = <myprojectID>;
const location = "global";
async function translateText() {
const request = {
parent: `projects/${projectId}/locations/${location}`,
contents: [req.body.text],
mimeType: "text/plain",
sourceLanguageCode: "en",
targetLanguageCode: "es",
};
const [response] = await translationClient.translateText(request);
res.json(response.translations[0].translatedText);
}
translateText();
};

我尝试过的东西

  1. 将JSON作为单个环境变量放在vercel上。所以它基本上是GOOGLE_APPLICATION_CREDENTIALS和key.json文件
  2. 试着把它放在一行
  3. 试着把钥匙拆开,做成这样的格式:
GOOGLE_ACCOUNT_TYPE=service_account
GOOGLE_PROJECT_ID=project11111
GOOGLE_PRIVATE_KEY_ID=11111111111111
etc

然而,我也不打算让这种方法在本地工作。4.将.env.local的路径保留到key.json,并上传了key.json本身。

这些都不起作用,我很失落。

我看过的资源

  1. https://github.com/vercel/vercel/issues/749#issuecomment-715009494
  2. 使用firebase privateKey作为Heroku配置变量逃避问题
  3. https://daveteu.medium.com/call-google-cloud-function-from-vercel-serverless-hosting-1b1688bb462c

我试着把这些应用到我的情况中,但我想不通。我真的很感激任何帮助!非常感谢。

环顾四周几天后,我找到了一个有效的解决方案。

我使用类似的命令将keys.json转换为base64字符串。https://gist.github.com/tomi/0675e58919af4554b198cee3f84405e5

然后使用这里找到的方法。https://github.com/orgs/vercel/discussions/219

我把base64字符串放在.env文件中的一行中进行检查,然后对Vercel环境变量也进行了检查,结果成功了。

相关内容

  • 没有找到相关文章

最新更新