Я работаю с флаттером, и у меня есть провайдер аутентификации. Всякий раз, когда мой пользователь входит в систему с помощью своего телефона, я также обновляю его профиль. Но моя проблема в том, что к авторизованным пользователям нельзя обращаться. Поэтому я прочитал, что я должен хранить отдельную коллекцию пользователей. Теперь мой вопрос: возможно ли обновить пользовательский документ в моей коллекции пользователей, когда пользователь обновляет свой профиль авторизации? Я хотел бы сделать это с облачными функциями, но я заметил, что есть только создание и удаление? Так как я могу это сделать?
Это то, что у меня сейчас есть
Поставщик аутентификации
Future<void> _verificationComplete(BuildContext context, AuthCredential authCredential, userInfo.UserInfo userInfo) async {
AuthResult authResult = await FirebaseAuth.instance.signInWithCredential(authCredential);
final userUpdateInfo = UserUpdateInfo();
userUpdateInfo.displayName = userInfo.name;
userUpdateInfo.photoUrl = userInfo.photoUrl;
await authResult.user.updateProfile(userUpdateInfo);
await authResult.user.reload();
user = UserModel.fromFirebase(authResult.user);
_status = AuthenticationStatus.authenticated;
notifyListeners();
}
Облачная функция
export const onUserCreated = functions.region('europe-west1').auth.user().onCreate(async user => {
const privateUserData = {
activeGroup: '',
cloudMessagingToken: '',
}
const publicUserData = {
name: '',
photoUrl: '',
}
const promises = [];
promises.push(firestore.collection('users').doc(user.uid).collection('private').doc('data').set(privateUserData));
promises.push(firestore.collection('users').doc(user.uid).collection('public').doc('data').set(publicUserData));
return await Promise.all(promises);
});