【问题标题】:Firestore Android Java -- How to get user document with Security Rules?Firestore Android Java -- 如何使用安全规则获取用户文档?
【发布时间】:2021-06-22 20:17:47
【问题描述】:

我相信我的安全规则和代码是正确的,但是当我尝试从用户文档中检索时,我在 Android Studio 中遇到了权限错误...

这是我的 Android java 代码中的 Get User Profile 方法:

public void getUserProfile(){
    db.collection("users")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull com.google.android.gms.tasks.Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            String displayName = document.getString("DisplayName");
                            String userEmail = user.getEmail();
                        }

                    } else {
                        Log.w("DEBUG_FirestoreActivity", "Error getting documents.", task.getException());
                    }
                }
            });
}

...这就是我的安全规则的设置方式:

    match /users/{userId} {
  allow read, write: if request.auth != null && request.auth.uid == userId;}

这是我在 android studio 中收到的错误的输出:

com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: 权限缺失或不足。

奇怪的是,一切都应该工作,我已经用规则游乐场测试了它。

【问题讨论】:

  • 这是我在 android studio 中收到的错误输出:com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or enough permissions。
  • 请不要在 cmets 中添加额外的信息。你的问题下面有一个编辑链接,所以你可以在那里添加它(就像我刚刚做的那样)。

标签: java android google-cloud-firestore firebase-security


【解决方案1】:

您的安全规则允许每个用户阅读自己的文档。但是您的代码试图读取所有用户的文档,因此被拒绝。

请注意security rules are not filters 自己。如果您只想读取当前用户的文档,则需要从代码中执行此操作:安全规则不会为您执行此操作。

例如:

db.collection("users")
  .doc(FirebaseAuth.getInstance().getCurrentUser().getUid())
        .get()

【讨论】:

  • DocumentReference docRef = db.collection("users") .document(FirebaseAuth.getInstance().getCurrentUser().getUid()); docRef.get().addOnCompleteListener(new OnCompleteListener&lt;DocumentSnapshot&gt;() {
  • 你能澄清一下你的评论是什么意思吗?
  • 上面的代码示例用于检索用户的文档,并设置了安全规则。
猜你喜欢
  • 2019-10-15
  • 2020-06-19
  • 2020-12-26
  • 2018-09-26
  • 2020-07-07
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
相关资源
最近更新 更多