我正在尝试创建一个登录页面,用户必须在其中输入自己的唯一ID和密码才能登录到我的应用程序。唯一ID在Firebase数据库中应该已经存在。例如,用户必须通过Firebase身份验证插入他们的学生ID和密码。希望能得到社会的帮助。谢谢。
*请注意,我是Firebase和任何移动应用程序开发领域的一名新手。希望你们能接受我的基本问题。
答案 0 :(得分:0)
您可以使用Firebase数据库存储唯一的ID和密码,然后在进行身份验证时将其检索。
您可以具有一个结构,例如主节点users
和一个名为username
的子节点,该子节点具有一个名为password
的子节点。您可以猜测哪个节点代表其名称。
首先,要在您的应用程序中注册,可以让用户选择自己的ID和密码,并可以使用以下类似的代码检查数据库中是否存在相同的ID:
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("users");
databaseReference.orderByChild("username").equalTo(n).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
Toast.makeText(Main3Activity.this, "Username already exists", Toast.LENGTH_SHORT).show();
else
writeNewUserNameIfNeeded(n);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
上面的代码n
是用户自己输入的用户名。
要在数据库中写入新的用户名或密码,可以使用类似以下的代码:
private void writeNewUserNameIfNeeded( final String username) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
final DatabaseReference usersRef = rootRef.child("users");
usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
dataSnapshot.child("username").setValue(username);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
要检查用户名和密码或授予登录名,您可以使用类似以下的代码:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
ref.orderByChild("username").equalTo(username).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
if(dataSnapshot.child("password").equals(pass))
// grant login access with these credentials
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});