Среда
- 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) }
}
}
С уважением