如何使用.env存储JSON密钥以与JWT一起使用



我正在使用Google Analytics(Analytics Api(API,需要传递JSON密钥来制作JWT。但是,我希望将密钥信息存储在我的.env文件中,而不是从我的.json文件中访问密钥。

我的斗争是无法读取我的.ENV变量,而我一直在遇到有关信息无效等的错误等。

这是一个示例键,像我的:

{
  "type": "service_account",
  "project_id": "id",
  "private_key_id": "id",
  "private_key": "-----BEGIN PRIVATE KEY-----nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfnddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfnddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfnddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfn-----END PRIVATE KEY-----n",
  "client_email": "email",
  "client_id": "number",
  "auth_uri": "uri",
  "token_uri": "uri",
  "auth_provider_x509_cert_url": "url",
  "client_x509_cert_url": "url"
}

这是写在我的.env文件中的方式:

CREDS='{
  "type": "service_account",
  "project_id": "id",
  "private_key_id": "id",
  "private_key": "-----BEGIN PRIVATE KEY-----nddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfnddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfnddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfnddaasdfasdfasdafasfadsafsdafadsafasdfasdfasdfadsnasdfasdfasdafsdfasdfasdfasdfasdfasdfasfdnasdfasdfasdfasfadsfasdfasdfasdfasdfasdfasdfn-----END PRIVATE KEY-----n",
  "client_email": "email",
  "client_id": "number",
  "auth_uri": "uri",
  "token_uri": "uri",
  "auth_provider_x509_cert_url": "url",
  "client_x509_cert_url": "url"
}'

这是我正在使用的代码:

const keysEnvVar = process.env['CREDS'];
const keys = JSON.parse(keysEnvVar);
const authClient = new google.auth.JWT( email, auth.fromJSON(keys), null, ['https://www.googleapis.com/auth/analytics.readonly']);

一个直觉是" private_key"值没有正确编写,它正在搞砸事情,但老实说我不确定该怎么做。

感谢您的阅读

我知道我迟到了,但是对于其他遇到相同错误的人(错误:错误:0909006c:pem套路:get_name:get_name:no Start Line((可以为每个新行使用下面的" n",然后使用以下命令从.env文件中提取键。

process.env.PRIVATE_KEY.replace(/\n/g, 'n')

示例:

const keysEnvVar = process.env['CREDS'].replace(/\n/g, 'n');

最新更新