Получить документ на Firestore вернуть иногда client.user не должен быть нулевым - PullRequest
0 голосов
/ 03 мая 2020

Среда

  • Android Версия студии: 4.0 canary 9
  • Firebase Компонент: firebase-firestore-ktx, firebase-auth
  • Версия компонента Firestore: 21.4.3
  • Версия компонента Auth: 19.3.1

Моя проблема

Я использую Auth Firebase SDK для входа / подписки пользователя (адрес электронной почты / пароль) или Gmail) и Firestore для получения пользовательских данных. Все работает нормально, за исключением 5% Android пользователей , у которых иногда возникают проблемы с получением данных Firestore после успешного входа в систему. Ошибка: client.user не должен быть нулевым

На iOS все работает нормально, у 95% Android пользователей все в порядке, я не могу воспроизвести его на моих устройствах: '(

Войдите в систему с электронной почтой / passwprd:
fun signin(
    email: String,
    password: String,
    callback: ((user: User?) -> Unit)
  ) {
    FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          val user = auth.currentUser
          user?.let {
            fetchUser(it.uid, callback)
         }
      }
  ...
  }
И функцией firestore для получения пользовательских данных, где произошла ошибка:
fun fetchUser(authId: String, callback: ((user: User?) -> Unit)?) {
    val db = Firebase.firestore
    db.collection("users")
      .document(authId)
      .get()
      .addOnSuccessListener { document ->
        try {
          if (document != null) {
            val user = document.toObject(User::class.java)
            user?.id = document.id
            callback?.let { it(user) }
          } else {
            callback?.let { it(null) }
          }
        } catch (ex: Exception) {
          // print(e) => client.user must not be null
          manageError(ex)
          callback?.let { it(null) }
        }
      }.addOnFailureListener { e ->
        // print(e) => client.user must not be null
        manageError(e)
        callback?.let { it(null) }
      }
  }

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...