Github Action中Firebase私钥解析异常:多余反斜杠问题求助
Github Action中Firebase私钥解析异常的解决方案
问题重现
在Github Action环境中使用Firebase私钥时,私钥字符串被自动添加多余反斜杠和换行符,导致解析失败。本地测试完全正常,仅在Action注入环境变量时出现问题,尝试过直接存储原始密钥、用引号包裹存入Secret均无效,此前Action运行正常,突发报错。错误信息如下:
expected: "{\"error\":\"403 Forbidden\"}" actual : "{\"error\":\"no private key data found in: \\\"-----BEGIN PRIVATE KEY-----\\\\nasdasdasdasdasdasdasdasdasdasd\\\\...\\\\ndsTYSiV+aU01dYLlmraHkeH86y6MlROTmnpHi0FmsFC5CLpadpzg8HB0EKSqNEnr\\\\asdsasasasasas\\\\asasasasasasas\\\\asasasasasas\\\\nPvQFJo1GwrPjzps+QAjtveoi24hCEvbBL2NM5b9SP+dDb1GR4zKYEya6r57xOJX7\\\\nGK4mrAikx/0TWiJghkMzl48+pVfFZ/pgfkcJF+0Rep3AgVwD9/0N3bTkD1tgzSCS\\\\nklAlx/sdi+qyskJqGZrrWrA=\\\\n-----END PRIVATE KEY-----\\\\n\\\"\"}"
解决步骤
正确存储私钥到Github Secrets
直接复制Firebase私钥的完整原始内容(包含-----BEGIN PRIVATE KEY-----、-----END PRIVATE KEY-----及中间所有换行),粘贴到Github Secrets中,不要手动添加引号或任何转义字符。在代码/Action中正确处理私钥
如果是Node.js脚本使用firebase-admin,需要将环境变量中的私钥转义字符还原:const serviceAccount = { type: 'service_account', project_id: process.env.FIREBASE_PROJECT_ID, private_key: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n'), client_email: process.env.FIREBASE_CLIENT_EMAIL, // 其他必填字段 }; admin.initializeApp({ credential: admin.credential.cert(serviceAccount) });如果是在Github Action的YAML中直接生成密钥文件,用带双引号的echo命令保留原始格式:
- name: Prepare Firebase credentials env: FIREBASE_PRIVATE_KEY: ${{ secrets.FIREBASE_PRIVATE_KEY }} run: | echo "$FIREBASE_PRIVATE_KEY" > ./service-account.json锁定依赖版本排查问题
若此前运行正常突发报错,大概率是依赖包自动更新导致的兼容性问题。在package.json中锁定firebase-admin、firebase-tools等相关依赖的具体版本,避免自动升级到不稳定版本。
内容的提问来源于stack exchange,提问作者Micheal J. Roberts
相关产品推荐
相关产品推荐

