Android 使用用户数据验证(Kotlin)写入Firebase
我在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”中写入用户自己的数组
"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或退出游戏)。