2017-07-17 71 views
0

我正在开发一个android应用程序,其中实现了Firebase实时数据库。现在我想通过电子邮件ID和密码登录使用存储在数据库中。我知道firebase身份验证可用于身份验证,但我想使用实时数据库登录,就像我们在Sql或我的SQL中所做的那样。使用存储在firebase实时数据库中的电子邮件登录

database

回答

2

我做到了。首先,我从数据库中获取特定电子邮件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) { 

     } 
    }); 

谢谢..

+0

感谢哥们!拯救了我的一天:) – Mohammad

+0

欢迎.. :) @Mhamhammad –

1

我假设你知道如何使用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数据库中。当用户输入用户名和密码时,应该使用userAuth中的用户名来读取userId。一旦获取了用户ID,就可以使用它来访问用户详细信息的userList。这是您检查输入密码的地方。

{ 
    "userList": { 
    "userA": { 
     "password": "abc123" 
    }, 
    "userB": { 
     "password": "abc123" 
    } 
    } 
} 

或者你也可以像这样认证你的用户。

+0

好,我得到它,但你能添加代码为如何我可以做这些东西.. –

+1

@UpendraShah至于代码,你可以检查firebase文档如何从数据库中存储和检索它。 https://firebase.google.com/docs/database/android/read-and-write – UmarZaii

+0

感谢您的回答。我通过我的方式得到解决方案.. –

相关问题