В моем проекте пользователь может войти, введя только свое имя пользователя и пароль.Но я застрял в опции забыть пароль. В своем коде я использую метод 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