如何使用Button自动向Firebase进行身份验证-Java

Mit*_*tch 5 java android firebase firebase-authentication

我正在为一家公司开发应用程序,该公司有几辆公共汽车和有轨电车在不同的路线/线路上行驶,并将游客运送到各个酒庄。

无论如何,我最初为驱动程序设计了该应用程序,以便使用电子邮件和密码登录Firebase数据库。

但是,系统使驱动程序及其笨拙等混乱。因此,我想通过单击按钮来使登录系统自动化。

这就是我到目前为止所拥有的。

登录系统


public class DriverLoginActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    private EditText mEmail, mPassword;
    private Button mLogin, mRegistration, mRegisterDriver,mBackBtn;

    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener firebaseAuthListener;



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

        mBackBtn = findViewById(R.id.back_login_btn);
        mBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(DriverLoginActivity.this,MainActivity.class);
                startActivity(intent);
                finish();
            }
        });
        mRegistration= (Button) findViewById(R.id.btn_reg);
        mRegistration.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(DriverLoginActivity.this, BusRegistrationActivity.class);
                startActivity(intent);
                finish();
                return;
            }
        });

        mAuth = FirebaseAuth.getInstance();

    firebaseAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            if(user != null){
                Intent intent = new Intent(DriverLoginActivity.this, DriverMapActivity.class);
                startActivity(intent);
                finish();
                return;
            }
        }
    };

    mEmail = (EditText) findViewById(R.id.email);
    mPassword = (EditText) findViewById(R.id.password);

        mLogin = (Button) findViewById(R.id.login);
        mLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String email = mEmail.getText().toString().replace(" ","");
            final String password = mPassword.getText().toString().replace(" ","");

            if(!TextUtils.isEmpty(email) && !TextUtils.isEmpty(password)) {
                mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(DriverLoginActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {

                            Toast.makeText(DriverLoginActivity.this, "sign in error", Toast.LENGTH_SHORT).show();
                        } else
                            mAuth.addAuthStateListener(firebaseAuthListener);
                    }
                });

            }
        }
    });


}

    @Override
    protected void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(firebaseAuthListener);
    }

    @Override
    protected void onStop() {
        super.onStop();
        mAuth.removeAuthStateListener(firebaseAuthListener);
    }




    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    }


    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}

Run Code Online (Sandbox Code Playgroud)

这就是我想要的样子。驾驶员点击他要登录的行,该代码仅分配了预定的登录并验证了用户。每行只有一个登录名,因此对于红线,例如,登录名是redlinedriver@bus.com

在此处输入图片说明

我要求我提出建议或指导或一些文档。我已经阅读了Firebase数据库文档,没有任何内容,而且在Stackoverflow上找不到与我要寻找的内容相关的任何内容。

该应用程序适合非常特定的员工用户,因此可以以任何人身份登录。