首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >即使在更改数据库规则以允许所有读写操作之后,也无法从防火墙获取数据

即使在更改数据库规则以允许所有读写操作之后,也无法从防火墙获取数据
EN

Stack Overflow用户
提问于 2019-12-11 07:12:40
回答 1查看 564关注 0票数 0

我在做什么

因此,我把我的两个应用程序连接到同一个数据库,一个是使用实时数据库,然后我使用云函数成功地将一些数据从实时数据库迁移到云防火墙,另一个应用程序是使用云防火墙。

firebase auth对这两个应用程序都很好,第一个应用程序成功地从实时数据库中获取数据。

我的问题是

但问题是,第二个应用程序无法从云防火墙获取数据,所以我成功地捕捉到了异常,它说:"com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED:缺少或不足的权限。“

我为解决所做的一切

因此,从例外情况下,我能够发现这是一个权限问题,所以我更改了云防火墙的规则

早期的防火墙规则

代码语言:javascript
运行
复制
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

修改了火基规则

所以我一个接一个地尝试了以下两条规则来解决这个问题。

代码语言:javascript
运行
复制
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

代码语言:javascript
运行
复制
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

但不幸的是,上述任何一项都无法解决这个问题,即使在发布了新规则之后,我仍然得到了同样的例外。

更新

当前防火墙规则的屏幕截图

Kotlin代码

代码语言:javascript
运行
复制
class Toppers {
    private val firestore:FirebaseFirestore by lazy{
        FirebaseFirestore.getInstance()
    }

    private val toppersList = mutableListOf<Topper>()
    private val toppers = MutableLiveData<List<Topper>>()

    init {
        toppers.value = toppersList
    }

    fun getToppers():LiveData<List<Topper>>
    {
        firestore.collection("Toppers").get().addOnCompleteListener { task ->

            if(task.isSuccessful)
            {
                toppersList.clear()
                for(topper in task.result!!)
                {
                    Log.d("(Saquib)","data is fetched "+topper.get("name").toString())
                    toppersList.add(
                        Topper(topper.get("name").toString(),
                               topper.get("percentage").toString(),
                               topper.get("imgurl").toString(),
                               topper.get("resulturl").toString(),
                               topper.get("rollno").toString(),
                               topper.get("schoolname").toString(),
                               topper.get("session").toString(),
                               topper.get("stream").toString(),
                               topper.get("standard").toString())
                    )
                }
            }
            else
            {
                Log.d("(Saquib)","unable to fetch the data "+task.exception?.cause.toString())
            }
        }.addOnCompleteListener {
            toppers.value = toppersList
        }
        return toppers
    }
}

Android日志

(Saquib):无法获取数据io.grpc.StatusException: PERMISSION_DENIED:缺少或权限不足。

谁能帮帮我,我真的很感激你

EN

Stack Overflow用户

发布于 2019-12-11 07:30:08

进入数据库->规则->

代码语言:javascript
运行
复制
 allow read, write: if false; to true;

但请注意,这意味着您的防火墙数据库根本没有安全性。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59280522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档