Firebase - 错误:16 UNAUTHENTICATED:请求的身份验证凭据无效。需要 OAuth 2 访问令牌、登录 cookie 或其他有效的 au

问题描述 投票:0回答:6

您好,我正在使用 firebase 函数,并且使用

firebase init
创建了一个 Node.js 项目,然后我选择了选项 functionsfirebasestorage。该项目与
firebase-admin
NPM 包一起使用。

当我使用

firebase deploy
部署项目时一切顺利,但是当我在云上运行该函数时,它会显示以下消息:

我已经用模拟器测试了整个项目,效果很好。

项目结构:

什么原因导致此错误?谢谢!

node.js firebase google-cloud-firestore google-cloud-functions google-cloud-storage
6个回答
1
投票

我解决了。问题是我在initializeApp中有这个:

const serviceAccount = require("../project-name-f3ad6ae0572f.json");
    
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  storageBucket: BUCKET_NAME,
});

这是不正确的,因为我缺少 Firebase 控制台 -> 项目设置 -> 您的应用程序上给出的 Firebase 配置。

那么,结果一定是这样的:

const firebaseConfig = {
  apiKey: "xxx-your-api-key-xxx",
  authDomain: "project-name.firebaseapp.com",
  projectId: "project-name",
  storageBucket: "project-name.appspot.com",
  messagingSenderId: "xxxxxxxxxxxxxxxx",
  appId: "x:xxxxxxxxxxxxxxx:web:xxxxxxxxxxxxxxx",
  measurementId: "G-XXXXXXXXX",
};

admin.initializeApp(firebaseConfig);

1
投票

验证您的电脑时间,我遇到了同样的问题并在更新电脑时间时解决。

import * as admin from 'firebase-admin';
const serviceAccount = require('./firebase.json');

if (!admin.apps.length) {
  admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
  });
}

export const firebaseDB = admin.firestore();

1
投票

我可能迟到了这个问题,但我昨天(2022 年 10 月 16 日)遇到了类似的问题。我认为,当您手动设置计算机时间时,Firebase 不起作用。

因此您的 Firebase 时间戳规则必须与您当前的主机时间匹配。


0
投票

函数框架的代码实际上在 GoogleCloudPlatform/functions-framework-nodejs 存储库中公开(尽管没有在任何地方公布)。

特别是您可以看到使用

killInstance
的情况,即触发退出代码 16 的情况:

const killInstance = process.exit.bind(process, 16);

这些案例(在撰写本文时):

· 未捕获异常 · 未处理的拒绝


0
投票

我今天也遇到了同样的问题,如果只发生在你本地环境中,那么有 99% 的可能性是你的计算机时间错误。


0
投票

嗯,我刚刚遇到了同样的错误,感谢这个线程,它帮助我指明了正确的方向。问题为我解决了。这对我来说不是日期/时间。 原来是

const serviceAccount = require('your-app-name-firebase-adminsdk-rbtsc...JSON')

我生成了一个新的私钥,我又回到了游戏中。

© www.soinside.com 2019 - 2024. All rights reserved.