он снова добавляется в базу данных реального времени (одни и те же учетные данные снова и снова)
Это происходит потому, что вы добавляете данные снова и снова. За это поведение отвечает следующая строка кода:
firebaseFirestore.collection("USERS")
.add(userdata);
Когда вы используете add (Данные объекта) :
Добавляет новый документ в эта коллекция с указанными данными, автоматически присваивая ей идентификатор документа.
Таким образом, каждый раз, когда вы вызываете вышеуказанную строку кода, создается новый документ. Чтобы решить эту проблему, вы должны добавить данные в указанное c местоположение, например, по следующей ссылке:
Firestore-root
|
--- users (collection)
|
--- uid (document)
|
--- Nom et prénom: "User Name"
|
--- Address émail: "User Email"
Вы можете получить uid
из объекта FirebaseUser
, используя следующая строка кода:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
Теперь, чтобы записать данные, используйте следующий код:
firebaseFirestore.collection("USERS").document(uid)
.set(userdata);
Но вместо использования add()
я использовал set()
на DocumentReference объект. Чтобы избежать записи данных каждый раз, когда пользователь входит в Google, вам нужно проверить, существует ли пользователь, и это можно сделать, используя мой ответ из следующего поста:
Но вместо проверки имени пользователя, вы должны проверить по uid
.
PS Ваш код говорит, что вы используя Cloud Firestore и не Firebase Realtime Database, как вы устанавливаете тег.