首页 > 解决方案 > Failed to save data to Cloud Firestore. for kotlin

问题描述

I am making a sign up function. I used the set function of firestore to save the user's name and email. However, function addOnFailureListener, not function addOnSuccessListener, is executed. Saving data continues to fail.

But Firebase Authentication is working well. Is there anything I should do in area Firebase Console?

package com.example.example01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.TextUtils
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.FirebaseFirestore

//import com.google.firebase.ktx.Firebase

class createAccountActivity : AppCompatActivity() {
    lateinit var auth : FirebaseAuth //firebase 인증 기능을 가져온다.
    lateinit var db : FirebaseFirestore

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

        auth = FirebaseAuth.getInstance()

        //matching
        val nameInput : EditText = findViewById(R.id.nameInput) //이름 입력
        val emailInput : EditText = findViewById(R.id.emailInput)  //이메일 입력
        val passwordInput : EditText = findViewById(R.id.passwordInput) //비번 입력
        val createButton : Button = findViewById(R.id.createButton) //클릭 버튼

        createButton.setOnClickListener{
            if (TextUtils.isEmpty(emailInput.text.toString())){ //emailInput이 Null인지 판단
                emailInput.setError("input Email")
                return@setOnClickListener //에러를 반환 + "이메일을 입력하세요."를 보여준다.
            }   else if (TextUtils.isEmpty(passwordInput.text.toString())){ //passwordInput Null인지 판단
                passwordInput.setError("input password")
                return@setOnClickListener //에러를 반환 + "이메일을 입력하세요."를 보여준다.
            }

            auth.createUserWithEmailAndPassword(emailInput.text.toString(),passwordInput.text.toString())
                .addOnCompleteListener(this) { task ->
                    val any = if (task.isSuccessful) { //유효성을 검사한다.

                        db = FirebaseFirestore.getInstance()
                        var user_data = hashMapOf(
                            "name" to nameInput.text.toString(),
                            "email" to emailInput.text.toString(),
                        )

                        db.collection("users").document(emailInput.text.toString())
                            .set(user_data)
                            .addOnSuccessListener { 
                                println("Success")
                            }
                            .addOnFailureListener {
                                println("Failed")
                            }
                        

                        println("Success")
                        Toast.makeText(this@createAccountActivity, "Successful to sign up", Toast.LENGTH_LONG)
                        finish()
                    } else {
                        println("Failed..")
                        Toast.makeText(this@createAccountActivity, "Failed to sign up", Toast.LENGTH_LONG)
                    }
                }
        }

    }
}

标签: androidfirebasegoogle-cloud-firestore

解决方案


推荐阅读