实时数据库未更新//Kotlin中Firebase数据未更新

g0czyy6m  于 2023-08-06  发布在  Kotlin
关注(0)|答案(2)|浏览(130)

这就是问题所在:
x1c 0d1x的数据
以下是我在Firebase中设置的规则:



Firebase中的当前用户:



当我创建一个新用户时,它应该在Firebase Realtime DB中更新。但在这种情况下,这并没有帮助。我甚至将读、写规则改为true,但它没有帮助&一直显示null。

//下面的代码//

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_sign_up)
    supportActionBar?.hide()

    mAuth = FirebaseAuth.getInstance()
    edtName =findViewById(R.id.edt_name)
    edtEmail =findViewById(R.id.edt_email)
    edtPassword =findViewById(R.id.edt_password)
    btnSignUp =findViewById(R.id.btn_signup)

    btnSignUp.setOnClickListener{
        val name = edtName.text.toString()
        val email = edtEmail.text.toString()
        val password = edtPassword.text.toString()

        signUp(name, email,password)

    }
}
private fun signUp(name:String, email: String,password: String){
    //logic for signup

    mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                //going homE
                addUserToDatabase(name, email, mAuth.currentUser?.uid!!)

                val intent= Intent(this@SignUp, MainActivity::class.java)
                startActivity(intent)

            } else {
                Toast.makeText(this@SignUp, "Some Error occurred", Toast.LENGTH_SHORT).show()

            }
        }

}
private fun addUserToDatabase(name:String, email:String, uid:String){
    mDbRef=FirebaseDatabase.getInstance().getReference()

    mDbRef.child("user").child(uid).setValue(User(name, email, uid))

}

}

字符串
//用户类编码//

package com.example.mychat

class User {
   var name : String? = null
   var email : String? = null
   var uid : String? = null

   constructor(){}

   constructor(name:String?, email:String?, uid:String?){
     this.name= name
     this.email=email
     this.uid=uid
   }

 }

tf7tbtn2

tf7tbtn21#

如果您既没有获得完成侦听器,也没有获得错误侦听器,那么您是否在第一次访问控制台中的数据库之前下载了google-services.json?在这种情况下,文件可能不包含SDK需要的数据库引用。要解决此问题,请从项目中下载新的google-service.json并在应用中使用,或者在mDbRef=FirebaseDatabase.getInstance("URL here").getReference().的代码中指定数据库URL

@Frank货车Puffelen的解决方案有效。

mjqavswn

mjqavswn2#

是的,你所需要做的就是,后藤firebase console ->真实的time database -> rules(从同一页面的顶部工具栏)并将规则更改为:

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

字符串
你已经准备好了,这对我很有效!

相关问题