Android 使用用户数据验证(Kotlin)写入Firebase

Android 使用用户数据验证(Kotlin)写入Firebase,android,firebase,firebase-realtime-database,kotlin,firebase-security,Android,Firebase,Firebase Realtime Database,Kotlin,Firebase Security,我在Firebase实时数据库中设置了以下规则: "rules": { ".read": false, ".write": false, "userData": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid", } } } 我想在“userData”中写入用户自己的数组

我在Firebase实时数据库中设置了以下规则:

 "rules": {
    ".read": false,
    ".write": false,

        "userData": {
          "$uid": {
            ".read": "$uid === auth.uid",
            ".write": "$uid === auth.uid",
          }
    }
}
我想在“userData”中写入用户自己的数组,并从Firebase设置以下val:

val currentUser=FirebaseAuth.getInstance().currentUser
val ref=FirebaseDatabase.getInstance().getReference(“用户数据”)
然后,我在从onClickListener触发的save函数中调用以下命令:

val userId=currentUser?.uid
val submissionDetails=AccountDetails(firstname,lastname)
ref.child(userId.toString()).setValue(submissionDetails).addOnCompleteListener{
}
当我将写安全设置为
true
时,我看到一个数组已构建,但在编程
$uid===auth.uid
时被拒绝访问


类似地,一旦数组出现,我就可以打开
$uid===auth.uid
并写入数组。

用户是否已登录?@cutiko不是通过userId完成的吗?@cutiko-忽略我的最后一条评论。我做了一些进一步的测试,更好地了解你。不,没有可供用户开始使用的数组。一旦我创建了一个没有安全规则的应用程序,那么我就可以用应用的安全规则更新用户数据。您可能不想在一个可为null的应用程序上调用
toString()
。我将使用
val userId=currentUser?.uid?:return
(创建非空的userId或退出游戏)。