首页 > 解决方案 > 实时数据库未存储数据

问题描述

l 无法保存数据 Firebase 实时数据库没有错误代码。auth 创建用户但数据库未在应用程序内存储用户数据。l 改变数据库规则

{
 "rules": {
   ".read": true,
   ".write": true
  }
}

l 关闭防火墙,尝试测试另一个应用程序,我从firebase中完全删除了应用程序并重新创建它并再次下载了google-services.json文件。但无法解决问题。我尝试了很多不同的代码结构,但都没有工作这是我的注册活动代码块最后一个版本

class SignUpActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.sign_up_activity)

       signInView.setOnClickListener {
            startActivity(Intent(this, SignInActivity::class.java))
        }

        sign_up_btn.setOnClickListener {
            createAccount()
        }
    }
    private fun createAccount() {

        val fullname = fullNameSignUp.text.toString()
        val username = userNameSignUp.text.toString()
        val email = emailSignUp.text.toString()
        val password = passwordSignUp.text.toString()

        when{
            TextUtils.isEmpty(fullname) -> Toast.makeText(this,"full name is required.", Toast.LENGTH_LONG).show()
            TextUtils.isEmpty(username) -> Toast.makeText(this,"user name is required.", Toast.LENGTH_LONG).show()
            TextUtils.isEmpty(email) -> Toast.makeText(this,"email is required.", Toast.LENGTH_LONG).show()
            TextUtils.isEmpty(password) -> Toast.makeText(this,"password is required.", Toast.LENGTH_LONG).show()

            else -> {
                /*
                val alert = AlertDialog.Builder(this)
                alert.setTitle("SignUp")
                alert.setMessage("Please wait, this may take a while...")
                alert.setCancelable(false)
                alert.show()
               */
               val progressDialog = ProgressDialog(this@SignUpActivity)
                progressDialog.setTitle("SignUp")
                progressDialog.setMessage("Please wait, this may take a while...")
                progressDialog.setCanceledOnTouchOutside(false)
                progressDialog.show()

                val mAuth: FirebaseAuth = FirebaseAuth.getInstance()

                mAuth.createUserWithEmailAndPassword(email, password)
                    .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        saveUserInfo(fullname, username, email,progressDialog)
                        progressDialog.dismiss()

                       // AlertDialog.Builder(this)
                       // finish()

                    } else {
                        val message = task.exception!!.toString()
                        Toast.makeText(this, "Error: $message", Toast.LENGTH_LONG).show()
                        mAuth.signOut()
                        progressDialog.dismiss()
                       // AlertDialog.Builder(this)
                       // finish()
                    }
                }
            }
        }
    }

    private fun saveUserInfo(fullname: String, username: String, email: String,progressDialog:ProgressDialog) {

        val currentUserID = FirebaseAuth.getInstance().currentUser!!.uid
        val usersRef = FirebaseDatabase.getInstance().reference.child("Users")

        val userMap = HashMap<String,Any>()
        userMap["uid"] = currentUserID
        userMap["fullname"] = fullname   
        userMap["username"] = username  
        userMap["email"] = email
        userMap["bio"] = ""
        userMap["image"] = "gs://fart-me-ae78f.appSpot.com/Default Images/profile.png"
        // db = FirebaseFirestore.getInstance()
        // val usersRef = db.collection("Users").add(userMap)
        // usersRef.addOnCompleteListener { task ->

        usersRef.child("Users").child(currentUserID).setValue(userMap)
            .addOnCompleteListener   { task ->

              if (task.isSuccessful) {

                  Toast.makeText(this, "Account has been created successfully.", Toast.LENGTH_LONG).show()
                  progressDialog.dismiss()


                  val intent = Intent(this@SignUpActivity, MainActivity::class.java)
                  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
                  startActivity(intent)
                  finish()

                  // AlertDialog.Builder(this)
                  // finish()

              } else {
                  val message = task.exception!!.toString()
                  Toast.makeText(this, "Error: $message", Toast.LENGTH_LONG).show()
                  FirebaseAuth.getInstance().signOut()
                  progressDialog.dismiss()
                  //AlertDialog.Builder(this)
                  // finish()
              }
           }
    }
}

那些有同样问题的人找到的解决方案对我不起作用。如果有人能帮我解决这个问题,我会很高兴

标签: kotlinfirebase-realtime-database

解决方案


推荐阅读