您可以使用 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) {
}
});