JS后端设置Firebase自定义claims时initializeApp报credential错误如何解决
报错触发原因
Firebase Admin SDK 初始化时要求credential配置项必须传入实现了Credential接口的实例,你当前直接传入了服务账号密钥的本地路径字符串,不符合参数校验规则,因此触发报错。
解决方案
你需要调用admin.credential.cert()方法,传入服务账号密钥的配置内容,生成符合要求的Credential实例,再传入初始化配置中。因为你使用了ES模块规范,导入JSON文件时需要添加类型断言,修正后的代码如下:
import admin from "firebase-admin"; // ES 模块导入 JSON 文件需添加类型断言 import serviceAccount from "./service-account-key.json" assert { type: "json" }; admin.initializeApp({ credential: admin.credential.cert(serviceAccount), }); // 通过邮箱获取用户UID const email = "bearcodes@outlook.com"; admin.auth().getUserByEmail(email) .then(function (userRecord) { const uid = userRecord.uid; console.log(uid) }) .catch(function (error) { console.log("获取用户数据失败:", error); });
如果你的Node.js版本不支持导入JSON时的断言语法,也可以通过fs模块读取密钥文件内容后传入cert方法:
import admin from "firebase-admin"; import { readFileSync } from "fs"; const serviceAccount = JSON.parse(readFileSync("./service-account-key.json", "utf8")); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), });
内容的提问来源于stack exchange,提问作者Psuedo
相关产品推荐
相关产品推荐

