簡體   English   中英

如何使用Button自動向Firebase進行身份驗證 - Java

[英]How to automatically Authenticate into Firebase with Button - Java

我正在為一家公司建立一個應用程序,該公司有幾輛公共汽車和有軌電車,它們在不同的路線/線路上行駛,並將客人運送到各個酒庄。

無論如何,我最初設計的應用程序讓驅動程序使用電子郵件和密碼登錄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) {

    }
}

這就是我想要它的樣子。 驅動程序點擊他想要登錄的行,代碼只是指定了一個預定的登錄並驗證用戶。 每行只有一個登錄名,因此對於紅線,例如登錄名為redlinedriver@bus.com

在此輸入圖像描述

我要求提供一個建議,指示或一些文件,我可以看一下。 我已經瀏覽過Firebase數據庫文檔而且沒有任何內容,我無法在Stackoverflow上找到任何與我正在尋找的內容相關的內容。

這個應用程序適合作為員工的特定用戶,因此用戶可以像任何人一樣登錄。

創建一個對用戶進行身份驗證的方法,就像這樣。

  public void authenticateUser(final String mEmail, final String mPassword){

        final String email = mEmail.replace(" ","");
        final String password = mPassword.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);
                }
            });

        }

    }

然后解析登錄詳細信息

        mLogin = (Button) findViewById(R.id.login);
        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                authenticateUser("redlinedriver@bus.com","123456");
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM