我正在尝试使用Firebase在Android Studio中创建登录和注册系统。注册效果很好,在Firebase中成功创建了用户。但是,每当我尝试登录时,即使输入的密码与我注册时使用的密码相同,也会出现此错误“密码无效或用户没有密码”。我认为问题可能出在我的代码上,因为当我在Firebase Console上直接为给定用户创建帐户时,用户可以完美登录。可能导致此问题的原因?
我提供了登录名和注册活动代码: 登录活动
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class MainActivity extends AppCompatActivity
{
private EditText emailLoginEditText, passwordLoginEditText;
private Button loginBtn;
private TextView signupLink, forgetPassword;
private ProgressDialog progressDialog;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
emailLoginEditText = findViewById(R.id.email_login);
passwordLoginEditText = findViewById(R.id.password_login);
loginBtn = findViewById(R.id.btn_login);
signupLink = findViewById(R.id.signup_reg);
forgetPassword = findViewById(R.id.forget_password);
progressDialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
signupLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
startActivity(new Intent(MainActivity.this, RegistrationActivity.class));
}
});
forgetPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
startActivity(new Intent(MainActivity.this, ResetActivity.class));
}
});
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
loginDetails();
}
});
}
private void loginDetails()
{
String email = emailLoginEditText.getText().toString().trim();
String password = passwordLoginEditText.getText().toString();
if(TextUtils.isEmpty(email))
{
emailLoginEditText.setError("Email can't be empty...");
return;
}
if(TextUtils.isEmpty(password))
{
passwordLoginEditText.setError("Password can't be empty...");
return;
}
else
{
progressDialog.setTitle("Login");
progressDialog.setMessage("Please wait while we are connecting you");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task)
{
if(task.isSuccessful())
{
progressDialog.dismiss();
Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
}
else
{
progressDialog.dismiss();
Toast.makeText(MainActivity.this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
这是RegistrationActivity:
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class RegistrationActivity extends AppCompatActivity
{
private EditText mEmailEditText, mPasswordEditText;
private Button mRegisterBtn;
private TextView SigninLink;
private ProgressDialog progressDialog;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
mEmailEditText = findViewById(R.id.email_reg);
mPasswordEditText = findViewById(R.id.password_reg);
mRegisterBtn = findViewById(R.id.btn_reg);
SigninLink = findViewById(R.id.signin_here);
progressDialog = new ProgressDialog(this);
mAuth = FirebaseAuth.getInstance();
SigninLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
startActivity(new Intent(RegistrationActivity.this, MainActivity.class));
}
});
registration();
}
private void registration()
{
mRegisterBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
String email = mEmailEditText.getText().toString().trim();
String password = mEmailEditText.getText().toString();
if(TextUtils.isEmpty(email))
{
mEmailEditText.setError("Email can't be empty...");
return;
}
if(TextUtils.isEmpty(password))
{
mPasswordEditText.setError("Password can't be empty...");
return;
}
progressDialog.setTitle("Creating Account");
progressDialog.setMessage("Please wait while we are creating your account");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task)
{
if(task.isSuccessful())
{
progressDialog.dismiss();
startActivity(new Intent(RegistrationActivity.this, HomeActivity.class));
}
else
{
Toast.makeText(RegistrationActivity.this, "Registration failed...", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}
});
}
});
}
}