将当前登录用户的数据存储在 Kotlin 的 Firebase Firestore 中?

Storing data of currently signned user in Firebase Firestore in Kotlin?

我是 Android 的新手。我创建登录和注册功能。但是当用户在 FireBase FireStore 中注册时(基于当前用户 ID),我想存储用户的数据(在进入签名屏幕之前)。我有用户标识,但我不知道该怎么做。代码附在下面。我很高兴,如果有人能提供帮助。

package com.example.firebase
import android.content.Intent
import android.os.Binder
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import com.example.firebase.databinding.ActivitySignUpBinding
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.DocumentReference
import com.google.firebase.firestore.FirebaseFirestore

class Sign_Up_Activity : AppCompatActivity() {


private lateinit var binding: ActivitySignUpBinding
private lateinit var firebaseAuth: FirebaseAuth
private lateinit var firebasefirestore: FirebaseFirestore

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    binding = ActivitySignUpBinding.inflate(layoutInflater)

    setContentView(binding.root)

    firebaseAuth = FirebaseAuth.getInstance()
    firebasefirestore = FirebaseFirestore.getInstance()


      binding.signUpButton.setOnClickListener {


         val email = binding.emailEt.text.toString()
        val password = binding.passET.text.toString()
        val confirmPass = binding.confirmPassEt.text.toString()


        if (email.isNotEmpty() && password.isNotEmpty() && confirmPass.isNotEmpty()) {
            if (password.equals(confirmPass)) {

                firebaseAuth.createUserWithEmailAndPassword(email, password)
                    .addOnCompleteListener {

                        if (it.isSuccessful) {

                            val userid:String= firebaseAuth.currentUser!!.uid

                            firebasefirestore.collection("user").document(userid).get()



                            Log.d("User id",userid)

                            val intent = Intent(this, Sign_In_Activity::class.java)
                            startActivity(intent)

                        } else {
                            Toast.makeText(this, it.exception.toString(), 
  Toast.LENGTH_SHORT)
                                .show()
                        }
                    }


            } else {
                Toast.makeText(this, "Password is not matching", 
  Toast.LENGTH_SHORT).show()
            }
        } else {
            Toast.makeText(this, "Empty Fields are not Allowed", 
  Toast.LENGTH_SHORT).show()
        }
    }

  }
 }

当您使用以下代码行时:

firebasefirestore.collection("user").document(userid).get()

您没有将用户设置为 Firestore,您只是在阅读它。如果要将数据添加到数据库中,则必须使用 set(),如以下代码行:

val db = Firebase.firestore
val user = mapOf("email" to firebaseAuth.currentUser!!.email)
val userRef = db.collection("user")
userRef.document(userid).set(user)
                        .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully written!") }
                        .addOnFailureListener { e -> Log.w(TAG, "Error writing document", e) }

如果您有兴趣使用 Google 实现 Firebase 身份验证,请查看以下文章:

如果你偶然想实现匿名认证,那么请检查: