【问题标题】:Firestore error : Stream closed with status : PERMISSION_DENIEDFirestore 错误:流以状态关闭:PERMISSION_DENIED
【发布时间】:2021-03-20 06:27:33
【问题描述】:

我正在尝试对某些数据使用 firestore,但我在 firestore 控制台中看不到任何数据 错误:

(c4326c7) Stream closed with status: Status{code=PERMISSION_DENIED, description=Cloud Firestore API has not been used in project 508621789005 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/firestore.googleapis.com/overview?project=508621789005 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry., cause=null}.

虽然我允许读,写规则为真。

val db = FirebaseFirestore.getInstance()
    // Create a new user with a first and last name
            val user: MutableMap<String, Any> = HashMap()
            user["first"] = "Ada"
            user["last"] = "Lovelace"
            user["born"] = 1815

    // Add a new document with a generated ID
            db.collection("users")
                .add(user)
                .addOnSuccessListener { documentReference ->
                    Log.d(
                        TAG,
                        "DocumentSnapshot added with ID: " + documentReference.id
                    )
                }
                .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }

规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
       allow read, write: if true;
    }
  }
}

【问题讨论】:

  • 请分享您的数据库规则
  • 我在帖子中添加了规则

标签: firebase kotlin


【解决方案1】:

将在 android studio 中打开项目进行编辑并让它同步并进行索引,然后授予它更新 Gradle 版本的权限确实为我解决了问题, 发生这种情况是因为我添加了一个新的 google-service.json 文件而没有执行该步骤。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我通过删除文件解决了:

    app/build/generated/res/google-services/debug/values/values.xml
    

    此文件包含对旧 google API 的引用,并且由于某种原因它没有在项目 build 中被覆盖。当我手动删除 build 进程时,它会使用正确的引用再次创建。

    如果您使用 Android Studio,只需点击顶部菜单上的 Build 并 然后在Clean Project 上,你会得到相同的结果。

    【讨论】:

      【解决方案3】:

      如果您尚未在 Firebase 控制台中实际创建数据库,也会发生此错误。

      【讨论】:

        【解决方案4】:

        尝试从 firebase 启用该功能。就我而言,我在迁移到新帐户时忘记启用 Cloud Firestore。试试看!

        【讨论】:

          【解决方案5】:

          我通过创建一个新项目解决了这个问题。因为似乎项目id有问题。

          【讨论】:

          • 是的,由于项目 ID 不同,可能会出现问题,但只需进行干净的项目调用即可解决。我用你的参考解决了它。 Tnx
          • 哦..谢天谢地。因为你,我解决了我的问题。再次感谢
          【解决方案6】:

          用这个替换你的规则并尝试:

          rules_version = '2';
          service cloud.firestore {
            match /databases/{database}/documents {
              match /{multiSegment=**} {
                allow read, write;
              }
            }
          }
          

          【讨论】:

          • 没有改变
          • @MohamedAmin 刚刚编辑了我的答案。试试吧。如果它有效,很可能您的规则层次结构与您的规则层次结构不匹配。请添加您的数据库结构的图像,以便我可以相应地更改我的答案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-19
          • 2018-09-29
          • 1970-01-01
          • 2022-12-28
          • 1970-01-01
          • 2018-02-21
          相关资源
          最近更新 更多