android - 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)
}
}
}
}
}
解决方案
推荐阅读
- html - 在 h2 标题下居中一个框 (HTML/CSS)
- java - 将对象传递给Java中的超类
- python - 过滤字典列表中的项目
- r - 找到字符串中最长的连续元音集
- javascript - 如何修复角度网格附加数据
- mysql - 将结果集分成 10 组
- sql-server - 附加到 Powershell 脚本的输出
- fortran - Read(*,*) 导致 (unit = 5, file = 'stdin') Fortran 运行时错误:文件结束
- flutter - Flutter Typeahead
- http - 为什么电子邮件中的“取消订阅”链接使用 GET 方法而不是 POST、PUT、PATCH 或 DELETE?