Firebase Auth: изменения профиля пользователя не синхронизируются с другими устройствами? - PullRequest
0 голосов
/ 04 мая 2019

Сценарий:

Я вошел в систему с Firebase Auth, используя провайдера электронной почты. Я изменяю photoURL и displayName моего пользователя, используя этот код Swift:

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.photoURL = someURL
changeRequest?.displayName = someName
changeRequest?.commitChanges { (error) in
  // ...
}

С тех пор, когда я использую Auth.auth().currentUser.photoURL и Auth.auth().currentUser.displayName для визуализации имени пользователя и аватара, все это работает как положено. Нет проблем вообще.

Однако я также вошел в систему на другом устройстве, прежде чем я внес изменения в photoURL и displayName. И на этом устройстве отображается старая информация о пользователе, даже при закрытии и перезапуске приложения. И все это, пока я использую Auth.auth().addStateDidChangeListener API.

Обновляется информация только когда я выхожу и снова захожу. Я предполагаю, что он использует локально кэшированные данные, но не получает свежую информацию о пользователе с сервера или что-то в этом роде?

Я что-то не так делаю? Нужно ли принудительно обновлять приложение при запуске или что-то в этом роде?

Редактировать: Я пытался снова несколько раз, и да, это воспроизводится на 100%.

  1. Войдите в систему на двух устройствах. Выведите Auth.auth().currentUser.displayName где-нибудь на экране (или на консоль).
  2. На устройстве A измените имя дисплея. Когда я обновляю интерфейс, отображается новое имя. При перезапуске приложения отображается новое имя.
  3. На устройстве B старое имя по-прежнему отображается, даже после закрытия и перезапуска приложения. Только когда я выйду из системы и вернусь в систему, новое имя будет наконец отображено.

1 Ответ

0 голосов
/ 06 мая 2019

В итоге я создал новую коллекцию пользователей верхнего уровня, где я сейчас храню данные профиля пользователя.А с помощью прослушивателя снимков, обновление информации на одном устройстве также обновляет его на других.Жаль, что это было необходимо, но это работает.

...