簡體   English   中英

如何使用電子郵件從Firebase實時數據庫檢索數據?

[英]How to retrieve data using email from firebase realtime databse?

我有一個來自Firebase的數據庫。 我想使用用戶的電子郵件檢索一些數據。 假設用戶將自己的電子郵件(如果該電子郵件存在於Firebase數據庫中)則顯示其用戶名和密碼。 我未使用Firebase身份驗證,但正在使用Firebase實時數據庫。 這是我的數據庫結構: 數據庫結構

@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;
}

}

我怎樣才能做到這一點?

使用Firebase數據庫創建您自己的身份驗證系統不是一個好主意。 您要執行的操作將要求您允許讀取存儲在數據庫中的每個用戶的電子郵件密碼。 這將對您的應用造成巨大的安全風險,因為任何人都可以讀取數據庫中的所有電子郵件密碼。

Firebase提供了易於使用的Firebase身份驗證,其中包含許多可用選項。 您可以輕松地將安全性委派給firebase auth,並將用戶的配置文件和數據存儲在db中。 這樣,您還可以限制每個用戶的數據訪問權限(這就是為什么要為應用程序登錄電子郵件密碼的原因)。

請參閱firebase的身份驗證文檔: https : //firebase.google.com/docs/auth

它可以幫助您創建應用,而無需實現自己的身份驗證,而是專注於實際功能的開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM