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

У меня есть база данных из firebase.Я хочу получить некоторые данные, используя электронную почту пользователя.Предположим, что пользователь добавил свою электронную почту, если электронная почта существует в базе данных Firebase, тогда она показывает его / ее имя пользователя и пароль.Я не использую аутентификацию Firebase, я использую базу данных Firebase в реальном времени.вот моя структура базы данных: database structure

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

    emailf = findViewById(R.id.emailf);
    userf = findViewById(R.id.usernamef);
    passwordf = findViewById(R.id.passwordf);

    ok = findViewById(R.id.okbtn);

    database = FirebaseDatabase.getInstance();
    users = database.getReference("Users").child("emailAddress");

    ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            signInMethod(emailf.getText().toString());
        }
    });
}

private void signInMethod(final String email) {

    users.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.
            if (dataSnapshot.child("emailAddress").exists()){
                if (dataSnapshot.child(user.getUserName()).exists()){
                    Toast.makeText(ForgatePassword.this,"User already exists",Toast.LENGTH_LONG).show();
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError error) {
            // Failed to read value
            Log.w("Tag", "Email not exists", error.toException());
        }
    });
}

вот мой класс модели: открытый класс SignInUpModel {

private String fullName;
private String userName;
private String schoolName;
private String className;
private String division;
private String phnNumber;
private String emailAddress;
private String reference;
private String password;

public SignInUpModel() {

}

public SignInUpModel(String fullName, String userName, String schoolName, String className, String division, String phnNumber, String emailAddress, String reference, String password) {
    this.fullName = fullName;
    this.userName = userName;
    this.schoolName = schoolName;
    this.className = className;
    this.division = division;
    this.phnNumber = phnNumber;
    this.emailAddress = emailAddress;
    this.reference = reference;
    this.password = password;
}

public String getFullName() {
    return fullName;
}

public void setFullName(String fullName) {
    this.fullName = fullName;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getSchoolName() {
    return schoolName;
}

public void setSchoolName(String schoolName) {
    this.schoolName = schoolName;
}

public String getClassName() {
    return className;
}

public void setClassName(String className) {
    this.className = className;
}

public String getDivision() {
    return division;
}

public void setDivision(String division) {
    this.division = division;
}

public String getPhnNumber() {
    return phnNumber;
}

public void setPhnNumber(String phnNumber) {
    this.phnNumber = phnNumber;
}

public String getEmailAddress() {
    return emailAddress;
}

public void setEmailAddress(String emailAddress) {
    this.emailAddress = emailAddress;
}

public String getReference() {
    return reference;
}

public void setReference(String reference) {
    this.reference = reference;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

}

Как я могу это сделать?

1 Ответ

0 голосов
/ 09 июля 2019

Использование базы данных firebase для создания собственной системы аутентификации не очень хорошая идея. То, что вы хотите сделать, потребует, чтобы вы позволили читать каждый пароль электронной почты пользователя, хранящийся в базе данных. Это будет представлять серьезную угрозу безопасности для вашего приложения, поскольку каждый может прочитать все пароли электронной почты в вашей базе данных.

Firebase обеспечивает простую в использовании проверку подлинности с помощью множества опций. Вы можете легко делегировать безопасность для firebase auth и сохранить профиль и данные вашего пользователя в db. Таким образом, вы также можете ограничить доступ к данным для каждого пользователя (именно поэтому вы хотите, чтобы пароль для входа в приложение для электронной почты)

Пожалуйста, ознакомьтесь с документами, подтверждающими подлинность пожарной базы: https://firebase.google.com/docs/auth

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

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