[英]Login using email stored in firebase realtime database
我做了這個。 首先,我從數據庫中獲取特定電子郵件 ID 的數據,然后比較其密碼並分配相關功能來執行……
Query query = databaseReference.child("users").orderByChild("email").equalTo(txvUsername.getText().toString().trim());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// dataSnapshot is the "issue" node with all children with id 0
for (DataSnapshot user : dataSnapshot.getChildren()) {
// do something with the individual "issues"
UsersBean usersBean = user.getValue(UsersBean.class);
if (usersBean.password.equals(txvPassword.getText().toString().trim())) {
Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
} else {
Toast.makeText(context, "Password is wrong", Toast.LENGTH_LONG).show();
}
}
} else {
Toast.makeText(context, "User not found", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
謝謝..
我假設您知道如何使用 ValueEventListener、onDataChange 方法和 Datasnapshot。
如上所述,您想像在 SQL 或 MySQL 中那樣做。 所以我不使用電子郵件,而是使用用戶名和密碼。
您可以在不使用 Firebase 身份驗證的情況下對您的用戶進行身份驗證。 但是,為了數據庫安全,不推薦這樣做。
{
"userList": {
"JRHTHaIsjNPLXOQivY": {
"userName": "userA",
"password": "abc123"
},
"JRHTHaKuIFIhnj02kE": {
"userName": "userB",
"password": "abc123"
}
},
"userAuth": {
"userA": "JRHTHaIsjNPLXOQivY",
"userB": "JRHTHaKuIFIhnj02kE"
}
}
正如您在上面看到的,我已經將 userName 和 userId 保存在 firebase db 中。 當用戶輸入用戶名和密碼時,您應該在 userAuth 中使用 username 讀取 userId。 檢索到 userID 后,使用它訪問 userList 以獲取用戶詳細信息。 這是您檢查輸入的密碼的地方。
{
"userList": {
"userA": {
"password": "abc123"
},
"userB": {
"password": "abc123"
}
}
}
或者您可以像這樣驗證您的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.