Firestore:代码 16(请求的身份验证凭据无效)

Wil*_*ker 2 javascript node.js firebase firebase-admin google-cloud-firestore

我正在尝试通过私钥和管理员权限使用管理员权限访问 Firestore,以便我可以将其用于后端的查询和内容。

//i import fb-admin
const firebaseAdmin = require('firebase-admin')

//i initialize as admin with a valid credential
firebaseAdmin.initializeApp({
  credential: firebaseAdmin.credential.cert('./pathto/myprivatekeyinfo.json')
})

//i initialize firestore
var dba = firebaseAdmin.firestore()

//i test the connection by listing all the available collections
dba.getCollections().then(collectionList => {
  collectionList.forEach(collection => {
    console.log(collection.id) //print available collections
  }
},error => console.error(JSON.stringify(error,null,"  "))) //print error
Run Code Online (Sandbox Code Playgroud)

它看起来与文档中的说明完全一样,但我的问题是,对于我尝试在其中执行 Node 的某些计算机,我只能在少数计算机上随机连接。

有时我连接并且一切顺利,按应有的方式打印可用的集合,但大多数时候我得到的只是无效凭据的错误

{
  "code": 16,
  "metadata": {
    "_internal_repr": {
      "www-authenticate": [
        "Bearer realm=\"https://accounts.google.com/\""
      ]
    }
  },
  "details": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
  "note": "Exception occurred in retry method that was not classified as transient"
}
Run Code Online (Sandbox Code Playgroud)

我尝试过不做任何更改,有时它可以在某些计算机上运行,​​在这些计算机上我测试完全相同的代码,但在其他计算机上则不然,并且尝试通过 firebase 控制台获取新的私钥不会改变任何事情。当我尝试连接时,有时需要很长时间才能收到此错误,或者根本不回调。提供的链接也没有帮助,因为它只提供了一些 JS 代码,用于通过前端进行常规访问以使用 google 登录,这根本不是我在这种情况下的用例(我已经尝试过“配置项目”按钮)。

我在这里做错了什么吗?为什么有时它可以工作,尽管没有任何改变,但有时却不起作用?

我很感激任何帮助

Wil*_*ker 6

此错误与此错误基本相同(由于应用程序/无效凭证错误而无法发送设备推送通知),其中计算机的时钟需要同步到 firebase 服务器的时钟。

在朋友试图指出这一点之前,我一直试图在各种计算机上测试它(所有计算机都设置了错误的时钟),但无法连接,所以我测试了并且它有效。

对我有用的解决方案肯定是检查计算机上的设置时钟。