【问题标题】:Difference between Firebase "Realtime Database" and "Cloud Firestore" in terms of REST API and authenticationFirebase“实时数据库”和“Cloud Firestore”在 REST API 和身份验证方面的区别
【发布时间】:2020-05-21 19:50:30
【问题描述】:

也许是一个重复的问题,但这次我已经尽力解释了。

在我的 Firebase 控制台上,当我单击屏幕左侧的“数据库”选项时,向我显示我们有两个不同的数据库,即“实时数据库”和“云 Firestore”。

这是我的实时数据库的当前外观:

这是我的 Cloud Firestore 的当前外观:

实时数据库测试

在 Postman 上,我确实选择了 PATCH 选项,为了定义我将在地址栏上放置的内容,我遵循了 synthax:

https://PROJECT-NAME.firebaseio.com/PATH.json?auth=YOUR-DATABASE-SECRET-CODE

对我来说,它变成:

https://eletronica-ab6b1.firebaseio.com/database333.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pIT0

这不是我真正的密钥,别担心。

作为我请求的内容,我转到正文,在列表中选择“原始”和“JSON”,以下是内容:

{"name": "PAUL"}

正如您在此处看到的那样:

在 Postman 上单击 SEND 后,实际上发生了对 REALTIME DATABASE 的写入:

所以对 REALTIME DATABASE 的写入是通过 Postman 进行的。

云防火墙测试

这是我的问题,我没有成功使用 Cloud Firestore。

在 Postman 上,我确实选择了 GET 选项,并且为了定义我将在地址栏上放置的内容,我遵循了 synthax:

https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(default)/documents/COLLECTION/DOCUMENT

对我来说,它变成:

https://firestore.googleapis.com/v1/projects/eletronica-ab6b1/databases/(default)/documents/colA/docA.json?auth=DZSQwLoNWAneWA9BcEfAgnelmY965pq98HF4pIT0

正如您在此处看到的那样:

我确实收到了这条消息作为回应:

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"auth\": Cannot bind query parameter. Field 'auth' could not be found in request message.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"auth\": Cannot bind query parameter. Field 'auth' could not be found in request message."
          }
        ]
      }
    ]
  }
}

奇怪的是,如果我尝试更改请求上的项目名称,例如从原来的“eletronica-ab6b1”到“eletronica-999zzz”,不应该存在的东西,响应与上述相同,完全一样。

为什么写入 REALTIME DATABASE 如此容易,而写入 CLOUD FIRESTORE DATABASE 似乎并不容易?是否无法像使用实时数据库一样以简单的方式写入 Cloud Firestore? Cloud Firestore 是否基于令牌?如果是,我如何通过 Postman 获取令牌,然后使用该令牌写入 Cloud Firestore 数据库?

问候。

【问题讨论】:

    标签: firebase rest firebase-realtime-database google-cloud-firestore postman


    【解决方案1】:

    Cloud Firestore 不支持通过密钥进行访问。要使用 REST API,您需要一个 Google OAuth 访问令牌(用于管理访问)或一个 Firebase Auth ID 令牌(普通用户访问)。然后需要以Authorization 格式的标头将其传递给服务器:

    Authorization: Bearer ${insert_token_here}
    

    我建议reading the docs 了解有关如何获取适当令牌的更多信息。

    【讨论】:

    • 好的,谢谢,我理解了标题。但是关于获取“Firebase Auth ID 令牌”,我怎样才能以比使用任何类型的代码更简单的方式获取一个令牌?我可以在控制台内获取或创建令牌吗?我不喜欢 Firebase 提供的这些文档。
    • Google OAuth Playground 有一些非常简单的步骤来获取访问令牌,但是出于安全原因,ID 令牌和访问令牌都会在一小时后过期,因此您不能只保留它.
    猜你喜欢
    • 1970-01-01
    • 2020-05-22
    • 2018-03-14
    • 2019-11-23
    • 2018-03-14
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多