Android Studio - вход с безопасностью телефона - PullRequest
0 голосов
/ 21 октября 2019

У меня есть приложение, в котором пользователи могут войти и зарегистрироваться. Приложение работает отлично, но теперь я хочу улучшить свое приложение. Я хочу сохранить данные для входа в систему, и когда пользователь снова захочет войти в систему, приложение будет входить в систему с защитой телефона, например, с помощью шаблона, булавки или блокировки пальцев . Но я понятия не имею, как этого добиться. Любые предложения или какой-то простой код?

У меня есть этот код для аутентификации пользователя с номером:

    public class MainActivity extends AppCompatActivity {

    Button btnSendcode;
    Button btnVerifycode;
    EditText verificationCode,phoneNumber;

    FirebaseAuth mAuth;

    String CodeSend;

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

        btnSendcode = findViewById(R.id.btnSendCode);
        btnVerifycode = findViewById(R.id.btnVerifyCode);
        verificationCode = findViewById(R.id.txtVerificatoinCode);
        phoneNumber = findViewById(R.id.txtPhoneNumber);

        mAuth = FirebaseAuth.getInstance();

        btnSendcode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SendCode();
            }
        });


        btnVerifycode.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                VerifyCode();
            }
        });
    }

    private void VerifyCode(){

        String code = verificationCode.getText().toString();

        if(code.isEmpty())
        {
            verificationCode.setError("Verification Code Required!");
            verificationCode.requestFocus();
            return;
        }

        PhoneAuthCredential credential = PhoneAuthProvider.getCredential(CodeSend, code);
        signInWithPhoneAuthCredential(credential);
    }

    private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(getApplication(),"Logged In",Toast.LENGTH_LONG).show();

                        } else {

                            if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                                // The verification code entered was invalid
                                Toast.makeText(getApplication(),"Invailed Code Try Again",Toast.LENGTH_LONG).show();
                            }
                        }
                    }
                });
    }

    private void SendCode(){
        String phone = phoneNumber.getText().toString();
        if(phone.isEmpty())
        {
            phoneNumber.setError("Phone Number Require!");
            phoneNumber.requestFocus();
            return;
        }

        PhoneAuthProvider.getInstance().verifyPhoneNumber(
                phone,        // Phone number to verify
                60,                 // Timeout duration
                TimeUnit.SECONDS,   // Unit of timeout
                this,               // Activity (for callback binding)
                mCallbacks);        // OnVerificationStateChangedCallbacks
    }

    PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        @Override
        public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {

        }

        @Override
        public void onVerificationFailed(@NonNull FirebaseException e) {

        }

        @Override
        public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
            super.onCodeSent(s, forceResendingToken);

            CodeSend = s;
        }
    };
}
...