Привет! Я проверяю, существует ли имя пользователя, чтобы можно было создать учетную запись в firestore, однако она позволяет создавать имена пользователей, игнорируя уже существующее имя, содержащее заглавные буквы. Пожалуйста помоги. Заранее спасибо.
имя пользователя может состоять из строчных, прописных, подчеркиваний и / или точек. Как проверить, существует ли имя пользователя независимо от прописных букв?
вот пример:
пример изображения
Вот код, который я использую:
username_ = username.getText().toString();
firebaseFirestore.collection("Usernames")
.document(username_.toLowerCase())
.get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if(!documentSnapshot.exists())
{
registerUser();
}
*** ОБНОВЛЕНИЕ ****
Я нашел решение: я добавил .toLowerCase ()
firebaseFirestore.collection("Usernames")
.document(username_.toLowerCase())
.get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if(!documentSnapshot.exists())
{
registerUser();
}
private void registerUser() {
mAuth.createUserWithEmailAndPassword(email_, pass_).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull final Task<AuthResult> task) {
if (task.isSuccessful()) {
Map<String,Object> usernameMap=new HashMap<String, Object>();
usernameMap.put("username",username_);
firebaseFirestore.collection("Usernames")
.document(username_.toLowerCase())
.set(usernameMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
task.getResult()
.getUser()
.sendEmailVerification()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//do your thang
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
task.getResult().getUser().delete();
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Error",e.getMessage());
}
});
}
}
});
}
СТАРЫЙ путь
Новый способ
Надеюсь, это поможет другим!