密码无效或用户没有密码

时间:2020-01-31 14:22:09

标签: java android firebase firebase-authentication

我正在尝试使用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();
                        }

                    }
                });
            }
        });
    }


}

0 个答案:

没有答案