【发布时间】:2020-01-12 03:24:56
【问题描述】:
我看到这个问题被问了多次,我在发布问题之前查看了所有问题。我有一个用于注册用户的 kotlin 活动。这有两个活动,一个是使用 FirebaseAuth 创建新用户,成功完成后,我将用户信息和密码存储在 FirebaseDatabase 中。当我运行代码时,我可以看到在 Firebase Auth 控制台中创建了用户。但是用户集合不是在数据库中创建的。
不幸的是,logcat 中也没有错误或异常。
private fun saveUserInfo(nickname: String, email: String, progressDialog: ProgressDialog) {
val currentUserID = FirebaseAuth.getInstance().currentUser!!.uid
val database = FirebaseDatabase.getInstance()
val usersRef = database.getReference("users")
val userMap = HashMap<String, Any>()
userMap["uid"] = currentUserID
userMap["nickname"] = nickname
userMap["email"] = email
usersRef.child(currentUserID).setValue(userMap)
.addOnCompleteListener {
if (it.isSuccessful){
progressDialog.dismiss()
Toast.makeText(this, "User created successfully", Toast.LENGTH_LONG)
val intent = Intent(this, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
finish()
} else {
progressDialog.dismiss()
FirebaseAuth.getInstance().signOut()
val message = it.exception!!.toString()
Toast.makeText(this, "Error: " + message, Toast.LENGTH_LONG)
}
}
.addOnFailureListener {
progressDialog.dismiss()
FirebaseAuth.getInstance().signOut()
val message = it.message.toString()
Toast.makeText(this, "Error: " + message, Toast.LENGTH_LONG)
}
}
我将规则设置为
{
"rules": {
".read": true,
".write": true
}
}
由于在 Firebase Auth 中创建了用户 ID,我知道连接正常。我可能会在这里遗漏什么?
我试过了
val database = FirebaseDatabase.getInstance()
val myRef = database.getReference("message")
myRef.push().setValue("Hello, World!")
.addOnFailureListener {
Log.d("TAG", it.message.toString())
}
这也不起作用。我确实使用了安卓工作室助手并确保数据库已连接。
【问题讨论】:
-
是否触发了
addOnCompleteListener或addOnFailureListener回调?我不知道 Kotlin,但我要做的是检查currentUserID的值是否正确。如果没问题,那么尝试一个简单的setValue("test")而不是 HashMap,看看它是否有效。 -
没有崩溃或堆栈跟踪?
-
当我在其中设置断点时,没有触发任何回调。也没有崩溃或堆栈跟踪
-
setValue(test) 也不起作用
-
currentUserID的值是多少?你可以登录并查看它吗?您是否等待注册完成后再进行saveUserInfo?你确定你真的打电话给saveUserInfo吗?
标签: android firebase kotlin firebase-realtime-database