我正在使用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');