繁体   English   中英

使用 email 创建用户和使用 Firebase 创建密码时出现问题

[英]Problem creating user with email and password with Firebase

我是 android dev 和 Kotlin 的新手,代码工作正常,直到我添加了一些验证。 我不知道我是否有太多的 if 语句,或者即使它们似乎有效,我还是把验证都弄错了。 任何帮助,将不胜感激

reg.setOnClickListener {
  
    val eml = email.text.toString()
    val passwr = password.text.toString()
    val confirmPsw = confirmPsswrd.text.toString()
    val fName = findViewById<EditText>(R.id.f_name).text.toString()
    val lName = findViewById<EditText>(R.id.l_name).text.toString()

    if (Patterns.EMAIL_ADDRESS.matcher(eml).matches()) {

        if (passwr == confirmPsw && passwr.length >= 4) {

            if (fName != "" || lName != "") {

                auth.createUserWithEmailAndPassword(eml, passwr)
                    .addOnCompleteListener (this) { task ->
                        //if task isn't successful
                        if (task.isSuccessful) {

                            Toast.makeText(
                                this@Register,
                                " Successfully Registered, Login to continue",
                                Toast.LENGTH_SHORT
                            ).show()
                        } else {
                            Toast.makeText(
                                this@Register,
                                " Registration error",
                                Toast.LENGTH_SHORT
                            ).show()
                        }
                    }

            } else {
                val builder = AlertDialog.Builder(this)
                with(builder)
                {
                    setTitle("Some Fields Were Left Empty!!")
                    setMessage("*Please Enter Your First and Last Name(s)")
                    setPositiveButton(
                        "OK",
                        DialogInterface.OnClickListener(function = buttonClick)
                    )
                    show()
                }
            }
        } else if (passwr.length < 4) {
            password.error = "Password must be at least 4 characters long"
            password.requestFocus()
        } else {
            confirmPsswrd.error = "Passwords don't match"
            confirmPsswrd.requestFocus()
        }
    } else {
        email.error = "Please enter a valid Email Address"
        email.requestFocus()
    }

}

最好用你的 addTextChangedListener 来做

private fun passwordchanged(){
    binding.passwordTextForSignUp.addTextChangedListener(object: TextWatcher{
        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            val pass = binding.passwordTextForSignUp.text.toString().trim()
            try {
                if (PASSWORD_PATTERN.matcher(pass).matches()){

                }
                else{
                    binding.passwordTextForSignUp.setError("Invalid Password!")
                    binding.passwordTextForSignUpLayout.helperText = "Must be at least one number, at least one special character and at least 8 characters."
                }
            }catch (e : Exception){
                Toast.makeText(this@SignUpActivity,e.localizedMessage,Toast.LENGTH_LONG).show()
            }

        }

private val PASSWORD_PATTERN: Pattern = Pattern.compile(
    "^" +  "(?=.*[0-9])" +         //at least 1 digit
            //"(?=.*[a-z])" +         //at least 1 lower case letter
            //"(?=.*[A-Z])" +         //at least 1 upper case letter
            "(?=.*[a-zA-Z])" +  //any letter
            "(?=.*[@#$%^&+=.])" +  //at least 1 special character
            "(?=\\S+$)" +  //no white spaces
            ".{8,}" +  //at least 8 characters
            "$"
)

在“class SignUpActivity: AppCompatActivity() {”下添加正则表达式

如果你想稍后再检查它们,你可以在按钮上添加一个if并查询它是否为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM