Войдите с помощью электронной почты и пароля. Как узнать, кто из них был неправ, когда потерпел неудачу? - PullRequest
0 голосов
/ 02 ноября 2019

Когда процесс входа не удался, я хотел бы узнать, что пошло не так. Так что, если электронная почта была неправильной или пароль. Поэтому я могу отправить более подробные инструкции для продолжения процесса.

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

        emailView = findViewById(R.id.emailText);
        passwordView = findViewById(R.id.pwText);

        loginB = findViewById(R.id.loginB);
        registerB = findViewById(R.id.registerB);

        // Initialize Firebase Auth
        mAuth = FirebaseAuth.getInstance();

        loginB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String email = emailView.getText().toString();
                String password = passwordView.getText().toString();

                if(email.isEmpty()){
                    emailView.setError("Please enter a valid Email");
                    emailView.requestFocus();
                }
                if(password.isEmpty()){
                    passwordView.setError("Please enter a passoword");
                }
                if(!(email.isEmpty() && password.isEmpty())){
                    mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if(task.isSuccessful()){
                                Intent i = new Intent(MainActivity.this,HomeActivity.class);
                                startActivity(i);
                            }else{
                                //My Question
                            }
                        }
                    });
                }
            }
        });
        registerB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
                startActivity(intent);
            }
        });
    }

Пытался найти функцию в задаче, которая могла бы помочь, но не нашел ничего полезного.

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Из соображений безопасности вы обычно не сообщаете , что было неверно с учетными данными.

Если вы скажете "имя пользователя недействительно" и "пароль недействителен", злоумышленник можетиспользуйте это, чтобы определить, какие имена пользователей существуют. Это немного защищает от неясности, но законные пользователи будут знать свое имя пользователя (или, по крайней мере, адрес электронной почты, чтобы получить учетные данные).

0 голосов
/ 03 ноября 2019

@ Ответ Каямана правильный: по соображениям безопасности вы не можете определить, какая часть учетных данных была неверной. Но для лучшего пользовательского опыта вы можете сделать немного больше ...

Если вы хотите узнать, зарегистрирован ли адрес электронной почты, вы можете позвонить fetchSignInMethodsForEmail. Вы можете использовать это, чтобы определить, является ли электронная почта известным пользователем Firebase, и в этом случае, например, предложить отправить электронное письмо для сброса пароля .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...