【发布时间】:2020-07-18 00:46:13
【问题描述】:
在我的应用中,我必须验证同名用户不超过两个。我用下面的代码试过了,但是当它检测到尝试注册的用户已经存在时,它会出现一个 toast,表示要更改它。
问题在于,即使您知道该名称已经存在并且虽然出现了 toast,但在创建帐户时却没有导入强加的条件,从而创建了两个具有相同用户名的用户。
如何避免创建两个同名用户?
regBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
regBtn.setVisibility(View.INVISIBLE);
loadingProgress.setVisibility(View.VISIBLE);
final String email = userEmail.getText().toString();
final String password = userPassword.getText().toString();
final String password2 = userPAssword2.getText().toString();
final String name = userName.getText().toString();
if(verificationUsername(name)){
showMessage("ass");
regBtn.setVisibility(View.VISIBLE);
loadingProgress.setVisibility(View.INVISIBLE);
}
public boolean verificationUsername (String equalto){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("Users").orderByChild("username").equalTo(equalto);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String TypeUser = dataSnapshot.child("username").getValue().toString();
if (dataSnapshot.exists()) {
System.out.println(TypeUser + "dssssssssssssssssssssssssddddddsssssssssssssssssssssss");
lola = dataSnapshot.toString();
showMessage("El nombre de usuario ya esta en uso, intenta con uno nuevo");
// dataSnapshot is the "issue" node with all children with id 0
for (DataSnapshot issue : dataSnapshot.getChildren()) {
// do something with the individual "issues"
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return false;
}
【问题讨论】:
-
你使用哪种认证方式?
-
使用 Firebase 身份验证
标签: java android firebase firebase-realtime-database