# #ios #swift #google-cloud-firestore #firebase-authentication
Вопрос:
Я реализовал firebase/auth и использую его для входа в firebase с помощью пользовательского токена, который я получаю из нашего API.
Auth.auth().signIn(withCustomToken: result.data.token) { (authResult, error) in
completion(authResult != nil amp;amp; error == nil)
}
Затем я подписываюсь на свой документ, используя snapshotListener.
guard let user = Auth.auth().currentUser else {
return
}
listListener = firestoreDB.collection(shoppingListCollectionName).document(user.uid).addSnapshotListener { (documentSnapshot, _) in ....
Слушатель работает примерно 1 час, а затем перестает работать. В журналах я получаю:
Ошибка потока: «Не прошел проверку подлинности: Отсутствует или неверная аутентификация».
А потом я получаю спам с:
Ошибка потока: «Неизвестно: произошла внутренняя ошибка, распечатайте и проверьте сведения об ошибке для получения дополнительной информации».
Ответ №1:
Я мало что знаю о пользовательском токене, так как вы используете пользовательский токен для аутентификации. Но если мы подходим к аутентификации firebase, срок службы идентификационного токена, выданного firebase, составляет не более одного часа. После этого firebase выдаст новый идентификационный токен, используя токен обновления. Я думаю, что срок действия вашего идентификационного токена истекает, и он больше не выдается.
Комментарии:
1. Есть какие-нибудь идеи о том, почему он не может быть переиздан? У нашего разработчика Android нет такой же проблемы.
Ответ №2:
Токены идентификатора Firebase действуют всего один час. Поскольку вы используете пользовательский токен, если вы хотите оставаться аутентифицированным более одного часа, вам нужно будет использовать API Firebase Auth REST. Таким образом, вам придется сделать HTTP-запрос, чтобы получить идентификационный токен и токен обновления из вашего пользовательского токена (проверьте пользовательский токен Exchange на наличие идентификатора и токена обновления в разделе). Затем вам просто нужно будет обновлять токен идентификатора каждый раз, когда он истекает (проверьте раздел «Обмен токеном обновления для токена идентификатора«).