首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js -Firebase服务帐户私钥不解析

Node.js -Firebase服务帐户私钥不解析
EN

Stack Overflow用户
提问于 2018-05-11 19:52:14
回答 5查看 27.4K关注 0票数 59

我在我的.env文件中使用app.js变量来访问密钥。在我下载了一个新的Firebase Service Account Private Key之前,一切都很顺利。当我用新值替换旧值时,我无法再访问键,因为在terminal中,当我运行node app.js时,我总是收到一条错误消息:

/Users/Cpu/Desktop/...../node_modules/firebase-admin/lib/auth/credential.js:129抛出新的error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL,‘未能解析私钥:’+error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL,);^ 错误:解析私钥失败:错误:无效的PEM格式化消息。在FirebaseAppError.FirebaseError 作为构造函数 at FirebaseAppError.PrefixedFirebaseError 作为构造函数 at new FirebaseAppError/firebase-admin/lib/auth/credential.js:192:64) at Object.cert (/Object.cert/Cpu/Desktop/.)在对象上。(/User/Cpu/Desktop/./app.js:14:32)在Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at FirebaseAppError.FirebaseError作为构造函数npm ERR!代码ELIFECYCLE npm错误!错误号1

我所做的就是c+p新的Private Key,然后添加它并保存.env文件,然后推到heroku,它就不再工作了。我甚至下载了一个新的Private Key,但同样的问题也发生了。

新旧二等钥匙

代码语言:javascript
运行
复制
// old Private Key
-----BEGIN PRIVATE KEY-----\nbbbbbbbb\n-----END PRIVATE KEY-----\n

// new Private Key
-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\n

.env文件:

代码语言:javascript
运行
复制
FIREBASE_PROJECT_ID=wwwwwwww
FIREBASE_CLIENT_EMAIL=xxxxxxxx
FIREBASE_DATABASE_URL=yyyyyyyy
FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\n

app.js文件:

代码语言:javascript
运行
复制
const dotenv = require('dotenv');
dotenv.load();

var admin = require("firebase-admin");
admin.initializeApp({
  credential: admin.credential.cert({
      projectId: process.env.FIREBASE_PROJECT_ID,   // I get no error here
      clientEmail: process.env.FIREBASE_CLIENT_EMAIL,   // I get no error here
      privateKey: process.env.FIREBASE_PRIVATE_KEY   // I get error HERE
  }),
  databaseURL: process.env.FIREBASE_DATABASE_URL
});

如何解决这个问题?

EN

Stack Overflow用户

发布于 2022-08-30 13:01:35

对我来说,我只是将整个服务放在我的.env文件中,如下所示:

.env

代码语言:javascript
运行
复制
FIREBASE_ADMIN_API={"type":..."private_key":"..."...}

然后我像这样导入它:

server.ts

代码语言:javascript
运行
复制
const firebase_admin_config = JSON.parse(process.env.FIREBASE_ADMIN_API);

getApps().length === 0 ? initializeApp({
  credential: credential.cert(firebase_admin_config)
}) : getApp();
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50299329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档