Я пытаюсь понять, как поместить исходные данные в Firestore, когда пользователь входит в систему, используя свой телефон # (и сохранять свои данные, когда они выходят из системы и снова входят в систему). Если кто-то работал с методом входа по электронной почте, вы знаете, что createUserWithEmailAndPassword запускается только один раз, когда пользователь регистрирует новую учетную запись.
Но для метода входа в Google и метода входа с телефона у него есть только одна функция, которая запускается каждый раз, когда они регистрируются, поэтому каждый раз, когда они выходят из системы и снова входят в систему, их данные получают перезаписаны исходными данными, которые я реализовал. Проблема в том, что я вызываю функцию, которая помещает исходные данные в Firestore каждый раз, когда они входят в систему с авторизацией телефона, как показано ниже. Я пробовал много способов обойти это, но безуспешно.
AuthCredential credential = PhoneAuthProvider.getCredential(verificationId: widget.verificationId, smsCode: smsCode);
AuthResult result = await _auth.signInWithCredential(credential);
FirebaseUser user = result.user;
await DatabaseService(uid: user.uid).updatingProfile( // How I put the initialData into Firestore
"",
"https://www.nacdnet.org/wp-content/uploads/2016/06/person-placeholder.jpg",
user.phoneNumber
);
await DatabaseService(uid: user.uid).updatingStat(""); // How I put the initialData into Firestore
return user;
DatabaseService
// Create instance for Firestore collection
final CollectionReference _profileCollection = Firestore.instance.collection("profile");
final CollectionReference _statCollection = Firestore.instance.collection("stat");
// Updating user profile
Future updatingProfile(String name, String image, String phoneNumber) async {
return await _profileCollection.document(uid).setData({
"name": name,
"image": image,
"phoneNumber": phoneNumber,
});
}
// Updating user Stat
Future updatingStat(String stat) async {
return await _statCollection.document(uid).setData({
"stat": stat,
"lastUpdate": DateTime.now()
});
}