Java 云Firestore安全规则权限

Java 云Firestore安全规则权限,java,android,firebase,firebase-security,Java,Android,Firebase,Firebase Security,如何将用户信息记录到数据库中,并在注册期间启用用户写入数据库的权限 service cloud.firestore { match /databases/{database}/documents { match /Users/{userId} { // Anybody can write to their ouser doc allow read, write: if request.auth.uid == userId; } } } 我无法使用这些限制注册用户,如何设置好

如何将用户信息记录到数据库中,并在注册期间启用用户写入数据库的权限

service cloud.firestore {
match /databases/{database}/documents {
match /Users/{userId} {
  // Anybody can write to their ouser doc
  allow read, write: if request.auth.uid == userId;
    }
  }
}
我无法使用这些限制注册用户,如何设置好限制以在确认电子邮件后启用日志信息

 register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

         if (imageUri != null) {
          username_ = username.getText().toString();
          name_ = name.getText().toString();
          email_ = email.getText().toString();
          pass_ = password.getText().toString();
          location_ = location.getText().toString();

          mDialog.show();

          if (TextUtils.isEmpty(username_)) {

           AnimationUtil.shakeView(username, RegisterActivity.this);
           mDialog.dismiss();

          }

          if (TextUtils.isEmpty(name_)) {

           AnimationUtil.shakeView(name, RegisterActivity.this);
           mDialog.dismiss();

          }
          if (TextUtils.isEmpty(email_)) {

           AnimationUtil.shakeView(email, RegisterActivity.this);
           mDialog.dismiss();

          }
          if (TextUtils.isEmpty(pass_)) {

           AnimationUtil.shakeView(password, RegisterActivity.this);
           mDialog.dismiss();

          }

          if (TextUtils.isEmpty(location_)) {

           AnimationUtil.shakeView(location, RegisterActivity.this);
           mDialog.dismiss();

          }

          if (!TextUtils.isEmpty(name_) || !TextUtils.isEmpty(email_) ||
           !TextUtils.isEmpty(pass_) || !TextUtils.isEmpty(username_) || !TextUtils.isEmpty(location_)) {

           firebaseFirestore.collection("Usernames")
            .document(username_)
            .get()
            .addOnSuccessListener(new OnSuccessListener < DocumentSnapshot > () {
             @Override
             public void onSuccess(DocumentSnapshot documentSnapshot) {
              if (!documentSnapshot.exists()) {
               registerUser();
              } else {
               Toast.makeText(RegisterActivity.this, "Username already exists", Toast.LENGTH_SHORT).show();
               AnimationUtil.shakeView(username, RegisterActivity.this);
               mDialog.dismiss();
              }
             }
            })
            .addOnFailureListener(new OnFailureListener() {
             @Override
             public void onFailure(@NonNull Exception e) {
              Log.e("Error", e.getMessage());
             }
            });

          } else {

           AnimationUtil.shakeView(username, RegisterActivity.this);
           AnimationUtil.shakeView(name, RegisterActivity.this);
           AnimationUtil.shakeView(email, RegisterActivity.this);
           AnimationUtil.shakeView(password, RegisterActivity.this);
           AnimationUtil.shakeView(location, RegisterActivity.this);
           mDialog.dismiss();

          }

         } else {
          AnimationUtil.shakeView(profile_image, RegisterActivity.this);
          Toast.makeText(RegisterActivity.this, "We recommend you to set a profile picture", Toast.LENGTH_SHORT).show();
          mDialog.dismiss();
         }

        }
       });


       }

要解决此问题,请使用以下代码行:

service cloud.firestore {
  match /databases/{database}/documents {
    match /Users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}
这基本上意味着,如果
request.auth.uid!=空
并且只有在
request.auth.uid==userId
时才能读取、更新和删除

编辑:

您正在收到“权限被拒绝”警告,因为在尝试写入之前:

firebaseFirestore.collection("Users").document(userUid).set(userMap)
您还试图将数据写入:

firebaseFirestore.collection("Usernames").document(username_).set(usernameMap)

你没有许可的地方。请向第一次写入操作添加相应的权限,一切都会正常。

注册时,收到此警告E/错误:权限\u被拒绝:权限缺失或不足。V/FA:不活动,从服务断开连接注册人:实时数据库正常注册人:cloud firestory未成功!在这种情况下,请添加用于将用户添加到数据库的代码以及数据库架构的屏幕截图。我已将照片添加到问题中,是否可以将其添加到评论中?不客气。关于验证部分,你应该发布另一个新问题,这样知道答案的人可以帮助你。好吧,如果我不能处理这个问题,我会发布一个新问题,非常感谢
service cloud.firestore {
  match /databases/{database}/documents {
    match /Users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}
firebaseFirestore.collection("Users").document(userUid).set(userMap)
firebaseFirestore.collection("Usernames").document(username_).set(usernameMap)