我正在开发一个Android应用程序,我在其中实现了Firebase实时数据库。现在我想通过存储在数据库中的电子邮件ID和密码登录。我知道firebase auth可用于身份验证,但我想使用实时数据库登录,就像我们在Sql或我的sql中一样。
答案 0 :(得分:5)
我做到了这一点。首先,我从数据库中获取特定电子邮件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) {
}
});
谢谢..
答案 1 :(得分:1)
我假设您知道如何使用ValueEventListener,onDataChange方法和Datasnapshot。
如上所述,您希望在SQL或MySQL中执行此操作。因此,我将使用用户名和密码而不是使用电子邮件。
您可以在不使用Firebase身份验证的情况下对用户进行身份验证。但是,建议不要将其用于数据库安全性。
<?php
echo '<img src="images/echo $row["image"];" class="img-responsive" /><br/>';
echo '<h4 class="text-info"> echo $row["name"]; </h4>';
?>
如上所示,我已在firebase db中保存了userName和userId。当用户输入用户名和密码时,您应该使用userAuth中的用户名来读取userId。检索到userID后,使用它来访问userList以获取用户详细信息。您可以在此处检查输入的密码。
{
"userList": {
"JRHTHaIsjNPLXOQivY": {
"userName": "userA",
"password": "abc123"
},
"JRHTHaKuIFIhnj02kE": {
"userName": "userB",
"password": "abc123"
}
},
"userAuth": {
"userA": "JRHTHaIsjNPLXOQivY",
"userB": "JRHTHaKuIFIhnj02kE"
}
}
或者您可以像这样验证您的用户。