Firebase用户身份验证无法正常工作
我对此仍然很新,所以对于
我试图学习如何使用firebase的电子邮件和密码来制作登录系统的任何小错误表示歉意,但似乎无法按预期工作。检查电子邮件是否为空的代码,不正确的格式,密码长度不匹配参数也无法正常工作。我在运行前仔细检查代码,但没有得到任何结果。
我已经将此应用程序连接到firebase,并添加firebase身份验证sdk
loginpage.kt
class loginPage : AppCompatActivity() {
lateinit var binding : LoginPageBinding
lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
binding = LoginPageBinding.inflate(layoutInflater)
super.onCreate(savedInstanceState)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
setContentView(R.layout.login_page)
auth = FirebaseAuth.getInstance()
login_back_button.setOnClickListener{
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
binding.loginButton.setOnClickListener{
val email = binding.emailField.text.toString()
val password = binding.passwordField.text.toString()
if (email.isEmpty()){
binding.emailField.error = "Email cannot be empty"
binding.emailField.requestFocus()
return@setOnClickListener
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
binding.emailField.error = "Email not valid"
binding.emailField.requestFocus()
return@setOnClickListener
}
if (password.length > 6){
binding.passwordField.error = "Minimal password length is 6"
binding.passwordField.requestFocus()
return@setOnClickListener
}
RegisterFirebase(email,password)
}
}
private fun RegisterFirebase(email: String, password: String) {
auth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this){
if (it.isSuccessful){
Toast.makeText(this, "Register Successful", Toast.LENGTH_SHORT).show()
val intent = Intent(this, homePage::class.java)
startActivity(intent)
} else {
Toast.makeText(this, "${it.exception?.message}", Toast.LENGTH_SHORT).show()
}
}
}
}
homepage.kt
class homePage : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
setContentView(R.layout.home_page)
}
}
dectext用于输入电子邮件(在login_page.xml中)
<EditText
android:id="@+id/email_field"
android:layout_width="272dp"
android:layout_height="31dp"
android:background="@drawable/email_password_filler"
android:hint="@string/enter_your_email"
android:paddingStart="20sp"
android:paddingTop="5sp"
android:paddingBottom="5sp"
android:textSize="13sp"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.126"
tools:ignore="Autofill,RtlSymmetry,TextFields" />
输入密码(在login_page.xml)
<EditText
android:id="@+id/password_field"
android:layout_width="272dp"
android:layout_height="31dp"
android:background="@drawable/email_password_filler"
android:hint="@string/enter_your_password"
android:paddingStart="20sp"
android:paddingTop="5sp"
android:paddingBottom="5sp"
android:textSize="13sp"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.208"
tools:ignore="Autofill,RtlSymmetry,TextFields" />
I'm still very new at this so apologize for any minor mistake I made
I'm trying to learn how to make a login system with email and password using Firebase but it doesn't seem to work as intended. The code to check whether the email is empty, incorrect format, password length not matching the parameter is not working too. I double check my code before running and I'm not getting any result.
I already connect this app to Firebase and add Firebase Authentication SDK
Clicking the login button will not make any error as intended
loginPage.kt
class loginPage : AppCompatActivity() {
lateinit var binding : LoginPageBinding
lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
binding = LoginPageBinding.inflate(layoutInflater)
super.onCreate(savedInstanceState)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
setContentView(R.layout.login_page)
auth = FirebaseAuth.getInstance()
login_back_button.setOnClickListener{
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
binding.loginButton.setOnClickListener{
val email = binding.emailField.text.toString()
val password = binding.passwordField.text.toString()
if (email.isEmpty()){
binding.emailField.error = "Email cannot be empty"
binding.emailField.requestFocus()
return@setOnClickListener
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
binding.emailField.error = "Email not valid"
binding.emailField.requestFocus()
return@setOnClickListener
}
if (password.length > 6){
binding.passwordField.error = "Minimal password length is 6"
binding.passwordField.requestFocus()
return@setOnClickListener
}
RegisterFirebase(email,password)
}
}
private fun RegisterFirebase(email: String, password: String) {
auth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this){
if (it.isSuccessful){
Toast.makeText(this, "Register Successful", Toast.LENGTH_SHORT).show()
val intent = Intent(this, homePage::class.java)
startActivity(intent)
} else {
Toast.makeText(this, "${it.exception?.message}", Toast.LENGTH_SHORT).show()
}
}
}
}
homePage.kt
class homePage : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
setContentView(R.layout.home_page)
}
}
EditText for entering email (in login_page.xml)
<EditText
android:id="@+id/email_field"
android:layout_width="272dp"
android:layout_height="31dp"
android:background="@drawable/email_password_filler"
android:hint="@string/enter_your_email"
android:paddingStart="20sp"
android:paddingTop="5sp"
android:paddingBottom="5sp"
android:textSize="13sp"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.126"
tools:ignore="Autofill,RtlSymmetry,TextFields" />
For entering password (in login_page.xml)
<EditText
android:id="@+id/password_field"
android:layout_width="272dp"
android:layout_height="31dp"
android:background="@drawable/email_password_filler"
android:hint="@string/enter_your_password"
android:paddingStart="20sp"
android:paddingTop="5sp"
android:paddingBottom="5sp"
android:textSize="13sp"
android:maxLines="1"
android:lines="1"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.504"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.208"
tools:ignore="Autofill,RtlSymmetry,TextFields" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
密码应始终大于或等于6,在您的情况下,情况相反。这样修复它:
login_back_button
缺少binding
引用以及如果是返回按钮,则应只使用完成
才能返回以前活动而不是再次创建新实例。像这样:更新:
问题是您使用
binding
,而不是在setContentView
中传递它。这样修复它:The password should always be greater than or equal to 6 and in your case, the condition is opposite. Fix it like this:
login_back_button
is missingbinding
reference as well as if it's a back button then you should just usefinish
to go back to previous activity rather than creating new instance again. Like this:Update:
The issue is that you are using
binding
but not passing it insetContentView
. Fix it like this: