Как сохранить адрес электронной почты пользователя в аутентификации firebase с помощью addListenerForsingleValueEvent - PullRequest
0 голосов
/ 31 января 2019

В моем проекте пользователь может войти, введя только свое имя пользователя и пароль.Но я застрял в опции забыть пароль. В своем коде я использую метод addListenerForSingleValueEvent для регистрации.

Я использую DatabaseReference для хранения информации о пользователе в firebase auto

users = FirebaseDatabase.getInstance () .getReference ("Users");

этот пользователь работает как этот снимок экрана

этот код указан ниже:

 users.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    //replace get method 27.01.19
                    if (dataSnapshot.child(user.getUserName()).exists()) {
                        Toast.makeText(MainActivity.this, "User Already Exist", Toast.LENGTH_SHORT).show();
                    } else {
                        users.child(user.getUserName())
                                .setValue(user);
                        Toast.makeText(MainActivity.this, "Registration Successfully", Toast.LENGTH_SHORT).show();

                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

я установил диалоговое окно с предупреждением для регистрации Это снимок экрана регистрации

////////for registration dialog////////
private void showDialog() {
    AlertDialog.Builder alertdialog = new AlertDialog.Builder(MainActivity.this);
    alertdialog.setTitle("Sign Up");
    alertdialog.setMessage("Please fill the credentials");
    LayoutInflater layoutInflater = this.getLayoutInflater();
    View view = layoutInflater.inflate(R.layout.signup, null);
    editNewEmail = view.findViewById(R.id.newemail);
    editNewUser = view.findViewById(R.id.newUsername);
    editNewPassword = view.findViewById(R.id.newpassword);
    alertdialog.setView(view);
    alertdialog.setIcon(R.drawable.ic_account_circle_black_24dp);
    alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    alertdialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            final User user = new User(editNewUser.getText().toString()
                    , editNewPassword.getText().toString()
                    , editNewEmail.getText().toString());
           users.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    //replace get method 27.01.19
                    if (dataSnapshot.child(user.getUserName()).exists()) {
                        Toast.makeText(MainActivity.this, "User Already Exist", Toast.LENGTH_SHORT).show();
                    } else {
                        users.child(user.getUserName())
                                .setValue(user);
                        Toast.makeText(MainActivity.this, "Registration Successfully", Toast.LENGTH_SHORT).show();

                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
            dialog.dismiss();
        }
    });
    alertdialog.show();

}

Мой метод входа здесь Скриншот входа в систему

btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            users.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.child(editUser.getText().toString()).exists()) {
                        User user = dataSnapshot.child(editUser.getText().toString()).getValue(User.class);
                        if (user.getPassword().equals(editPassword.getText().toString())) {
                            Intent intent = new Intent(MainActivity.this, Home.class);
                            Common.currentUser = user;
                            startActivity(intent);
                            finish();
                        } else
                            Toast.makeText(MainActivity.this, "Password Wrong", Toast.LENGTH_SHORT).show();
                    } else
                        Toast.makeText(MainActivity.this, "Please Register", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    });

Но я застрял, чтобы сделать опцию «забыть пароль», которая помогает пользователю, когда он забывает пароль, и повторно отправляет пароль, отправив адрес электронной почты Это демонстрационный снимок экрана с забываемым паролем

Я понимаю, что если я знаю, как хранить электронную почту в Firebase аутентификации, я справлюсь с этим.Я пытаюсь сохранить форму регистрации формы адреса электронной почты, но я не знаю, как сохранить электронную почту при аутентификации из формы singnUp в firebase.

У меня есть четкое представление о

mAuth.createUserWithEmailAndPassword(email, password)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success");
                FirebaseUser user = mAuth.getCurrentUser();
                updateUI(user);
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.getException());
                Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                        Toast.LENGTH_SHORT).show();
                updateUI(null);
            }

            // ...
        }
    });

но мне нужно знать, как хранить электронную почту в Firebase аутентификации без createUserWithEmailAndPassword

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