我正在学习Kotlin,并尝试在用户登录应用程序时将用户的电子邮件和UID保存在Firebase数据库中,但是数据没有存储在数据库中,并且logcat没有显示错误,因此我无法弄清楚是什么问题。
P.S。 -我已将Firebase数据库规则设置为
{
"rules": {
".read": true,
".write": true
}
}
这是login.kt文件代码
package com.revorg.tictactoe
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.activity_login.*
class Login : AppCompatActivity() {
var mFirebaseAuth: FirebaseAuth?=null
var database = FirebaseDatabase.getInstance()
var myRef=database.reference
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
mFirebaseAuth= FirebaseAuth.getInstance()
}
fun buLoginEvent(view:View){
LoginToFirebase(etEmail.text.toString(),etPassword.text.toString())
}
fun LoginToFirebase(email:String,password:String){
mFirebaseAuth!!.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this) {task ->
if(task.isSuccessful){
Toast.makeText(applicationContext,"Login Successful",Toast.LENGTH_SHORT).show()
var currentuser = mFirebaseAuth!!.currentUser
//save to Database
if(currentuser!=null) {
myRef.child("Users").child(splitString(currentuser.email.toString())).child(currentuser.uid)
}
LoadMain()
} else {
Toast.makeText(applicationContext,"Login Failed", Toast.LENGTH_SHORT).show()
}
}
}
override fun onStart() {
super.onStart()
LoadMain()
}
fun LoadMain(){
var currentuser = mFirebaseAuth!!.currentUser
if(currentuser!=null) {
var intent = Intent(this, MainActivity::class.java)
intent.putExtra("email", currentuser.email)
intent.putExtra("uid", currentuser.uid)
startActivity(intent)
}
}
fun splitString(str:String):String{
var split = str.split("@")
return split[0]
}
}
答案 0 :(得分:3)
什么都没有存储,因为您没有存储任何东西,因此需要使用setValue()
来存储数据。 {
"name": "bookapi",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3",
"gulp": "^3.9.1",
"gulp-nodemon": "^2.2.1",
"mongoose": "^5.2.7"
}
}
获得对数据库中某个位置的引用。
您应该这样做:
child()
那么您将拥有此数据库:
myRef.child("Users").child(currentuser.uid).child("email").setValue(email);