Я видел, что этот вопрос задавался несколько раз, и я просмотрел их все, прежде чем опубликовать вопрос. У меня есть действие kotlin, которое используется для регистрации пользователя. Это имеет два действия, одно из которых заключается в использовании FirebaseAuth для создания нового пользователя, при успешном завершении я сохраняю пароль expcet информации пользователя в 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 I знаю, что соединение работает. Что я мог здесь упустить?
Я пытался
val database = FirebaseDatabase.getInstance()
val myRef = database.getReference("message")
myRef.push().setValue("Hello, World!")
.addOnFailureListener {
Log.d("TAG", it.message.toString())
}
, и это тоже не сработало. Я использовал andrioid studio assistant и убедился, что база данных подключена.