我已经使用createUserWithEmailAndPassword
方法注册了用户,并且他们已在我的Firebase项目中注册(我可以看到他们的信息)。但是,当我尝试使用创建的电子邮件和密码登录时,task.isSuccessful
方法始终返回false,并且每次都运行else
语句。
登录和注册代码:
private Button buttonRegister;
private EditText editTextEmail;
private EditText editTextPassword;
private TextView textViewSignin;
private ProgressDialog progressDialog;
private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog=new ProgressDialog(this);
firebaseAuth= FirebaseAuth.getInstance();
buttonRegister = (Button) findViewById(R.id.buttonRegister);
editTextEmail=(EditText) findViewById(R.id.editTextEmail);
editTextPassword=(EditText) findViewById(R.id.editTextPassword);
textViewSignin=(TextView) findViewById(R.id.textViewSignin);
buttonRegister.setOnClickListener(this);
textViewSignin.setOnClickListener(this);
if(firebaseAuth.getCurrentUser()!=null){
//start the profile activity
finish();
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
}
}
private void registerUser(){
String email=editTextEmail.getText().toString().trim();
String password=editTextEmail.getText().toString().trim();
if(TextUtils.isEmpty(email)){
Toast.makeText(this, "Please enter E-mail first", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
Toast.makeText(this, "Please enter password first", Toast.LENGTH_SHORT).show();
return;
}
progressDialog.setMessage("Registerring User......");
progressDialog.show();
firebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
finish();
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
}
else{
Toast.makeText(MainActivity.this, "Unable to Register! Please try again.", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onClick(View v) {
if(v == buttonRegister){
registerUser();
}
if(v == textViewSignin){
finish();
startActivity(new Intent(this, LoginActivity.class));
}
}
答案 0 :(得分:1)
在我这是一个愚蠢的错误。 我在注册用户时将电子邮件值分配给了密码字段。
String email=editTextEmail.getText().toString().trim();
String password=editTextEmail.getText().toString().trim();
因此未为密码实际分配我实际通过的密码。 对不起这个非常愚蠢的错误。
答案 1 :(得分:0)
@Hemant Yadav
您是否检查了Firebase返回false时给出的异常?请使用以下代码检查当时发生了什么异常:
task.getException() //which returns the exception that caused the Task to fail.
检查并更新您遇到的异常情况,我们可以帮助您还是您可以解决这个想法?
答案 2 :(得分:0)
尝试此代码
firebaseAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
finish();
startActivity(new Intent(this, MainActivity.class));
}
else {
try {
throw task.getException();
}
catch (FirebaseAuthInvalidCredentialsException e) {
Toast.makeText(getApplicationContext(), "Invalid Password", Toast.LENGTH_LONG).show();
}
catch (FirebaseAuthEmailException e){
Toast.makeText(getApplicationContext(), "Invalid Email", Toast.LENGTH_LONG).show();
}
catch (FirebaseAuthException e){
Toast.makeText(getApplicationContext(), "Invalid Credentials", Toast.LENGTH_LONG).show();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
});
有关更多详细信息,请访问此https://firebase.google.com/docs/auth/android/password-auth