Android:firebase检查用户会话未按预期工作

时间:2017-07-18 15:59:45

标签: android firebase firebase-authentication

我是初学者,使用firebase构建注册和登录活动     我首先显示登录活动。它具有可点击的文本视图,其中显示“没有帐户?点击此处注册”,当点击它开始注册活动并允许用户注册但注册后需要开始登录活动但它没有发生

以下是Registration.java

public class Registration extends AppCompatActivity {

private EditText etname, etmail, etpass;
private Button btnreg;
FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registration);

    etname = (EditText) findViewById(R.id.etRemail);
    etmail = (EditText) findViewById(R.id.etRemail);
    etpass = (EditText) findViewById(R.id.etRpass);
    btnreg = (Button) findViewById(R.id.btnRreg);

    progressDialog = new ProgressDialog(this);
    firebaseAuth = FirebaseAuth.getInstance();

    if (firebaseAuth.getCurrentUser() != null) {
        Intent in = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(in);
        finish();
    }
}
public void user_reg_info(View view) {

    String uname = etname.getText().toString();
    String uemail = etmail.getText().toString();
    String upass = etpass.getText().toString();
    try {
        if (uname.isEmpty() || uname.trim().equals("")) {
            etname.setError("Name cannot be empty!");
            return;
        }

        if (uemail.isEmpty() || uemail.trim().equals("")) {
            etmail.setError("Email cannot be empty!");
            return;
        }
        if (upass.isEmpty() || upass.equals("")) {
            etpass.setError("Password cannot be empty!");
            return;
        }

        progressDialog.setMessage("Registering..please wait!");
        progressDialog.show();
        firebaseAuth.createUserWithEmailAndPassword(uemail, upass)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        progressDialog.dismiss();

                        if (task.isSuccessful()) {

                            Toast.makeText(Registration.this, "Registration successful", Toast.LENGTH_LONG).show();
                            Intent i = new Intent(Registration.this,Login.class);
                            startActivity(i);
                            finish();
                        } else {
                            Log.e("Error", task.getException().toString());
                            Toast.makeText(Registration.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }
                });


    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

点击注册按钮后,它会直接启动MainActivity

以下是Login.java

public class Login extends AppCompatActivity {


private EditText etmail,etpass;
private TextView clktoreg;
private ImageView imgLogin;
private Button btnLog;
private ProgressDialog progressDialog;
FirebaseAuth firebaseAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    etmail = (EditText) findViewById(R.id.eTLemail);
    etpass = (EditText) findViewById(R.id.eTLpass);
    clktoreg = (TextView) findViewById(R.id.click_2_reg);
    imgLogin = (ImageView) findViewById(R.id.imgLogin);
    btnLog = (Button) findViewById(R.id.btnLogin);
    progressDialog = new ProgressDialog(this);
    firebaseAuth = FirebaseAuth.getInstance();


    if(firebaseAuth.getCurrentUser()!=null){
        startActivity(new Intent(getApplicationContext(),MainActivity.class));
        finish();
    }

}

public void login_user(View view) {
    String email = etmail.getText().toString();
    String pass = etpass.getText().toString();
    try {
        if (email.isEmpty() || email.trim().equals("")) {
            etmail.setError("E-mail cannot be empty!");
            return;
        }
        if (pass.isEmpty() || pass.trim().equals("")) {
            etpass.setError("Password cannot be empty!");
            return;
        } else {
            progressDialog.setMessage("Logging in..please wait!");
            progressDialog.show();
            firebaseAuth.signInWithEmailAndPassword(email, pass)
                    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            progressDialog.dismiss();
                            if (task.isSuccessful()) {

                                Intent in = new Intent(getApplicationContext(), MainActivity.class);
                                startActivity(in);
                                finish();
                            } else {
                                etmail.setError("Check email ID");
                                etpass.setError("Check password");

                            }

                        }
                    });


        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
public void not_registered(View view) {

    Intent in = new Intent(this,Registration.class);
    startActivity(in);
}

}

1 个答案:

答案 0 :(得分:0)

我解释了你的应用的功能。

您注册用户,然后用户不再 null 登录活动已打开,您在登录活动中拥有该活动:

if(firebaseAuth.getCurrentUser()!=null){
        startActivity(new Intent(getApplicationContext(),MainActivity.class));
        finish();
}

因为用户不再是 null ,当登录活动开始并达到此条件时,mainActivity就会启动。