Когда действительно вызывается idTokenChanges?

Я использую firebase_auth в своем приложении Flutter. Из документов я понимаю, что idTokenChanges должен вызываться автоматически до истечения срока действия idToken экземпляра FirebaseAuth. Это должно быть хотя бы раз в час. Поэтому я пытаюсь использовать это для обновления idToken, который позже использую для аутентификации вызовов веб-API. Но через час мой слушатель не вызывается, а также я получаю статус 401 для последующих вызовов. Так где же правильно использовать idTokenChanges?

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
1
0
369
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите убедиться, что вы всегда используете обновленный токен, просто извлеките его перед любым вызовом, например:

String token = await FirebaseAuth.instance.currentUser.getIdToken();

Таким образом, вы гарантируете, что у вас всегда будет действительный токен.

Кроме этого, вы должны слушать поток idTokenChanges

FirebaseAuth.instance.idTokenChanges().listen((user) => print(user.refreshToken));

Но, как вы сказали, иногда это ненадежно и может не сработать.

Хорошо понял. Спасибо. Знаете ли вы, как я могу сократить время истечения срока действия idToken на бэкэнде, чтобы я мог проверить надежность (мне нужно иметь какое-то доказательство, прежде чем я смогу изменить существующий код:))

humblePilgrim 11.12.2020 16:03

Я не уверен, что это вообще возможно.

Miguel Ruivo 11.12.2020 16:18

Хорошо. Спасибо, в любом случае.

humblePilgrim 11.12.2020 16:21

"Иногда это ненадежно"...? Действительно? Код не похож на людей, он надежный! Осталось выяснить, как именно они работают...

Karolina Hagegård 09.06.2022 08:06

Ненадежность здесь может быть связана с наличием кода из SDK, который может содержать ошибки и иногда не срабатывать. :)

Miguel Ruivo 20.06.2022 12:49

Другие вопросы по теме