Я использую firebase_auth в своем приложении Flutter. Из документов я понимаю, что idTokenChanges должен вызываться автоматически до истечения срока действия idToken экземпляра FirebaseAuth. Это должно быть хотя бы раз в час. Поэтому я пытаюсь использовать это для обновления idToken, который позже использую для аутентификации вызовов веб-API. Но через час мой слушатель не вызывается, а также я получаю статус 401 для последующих вызовов. Так где же правильно использовать idTokenChanges?
Если вы хотите убедиться, что вы всегда используете обновленный токен, просто извлеките его перед любым вызовом, например:
String token = await FirebaseAuth.instance.currentUser.getIdToken();
Таким образом, вы гарантируете, что у вас всегда будет действительный токен.
Кроме этого, вы должны слушать поток idTokenChanges
FirebaseAuth.instance.idTokenChanges().listen((user) => print(user.refreshToken));
Но, как вы сказали, иногда это ненадежно и может не сработать.
Я не уверен, что это вообще возможно.
Хорошо. Спасибо, в любом случае.
"Иногда это ненадежно"...? Действительно? Код не похож на людей, он надежный! Осталось выяснить, как именно они работают...
Ненадежность здесь может быть связана с наличием кода из SDK, который может содержать ошибки и иногда не срабатывать. :)
Хорошо понял. Спасибо. Знаете ли вы, как я могу сократить время истечения срока действия idToken на бэкэнде, чтобы я мог проверить надежность (мне нужно иметь какое-то доказательство, прежде чем я смогу изменить существующий код:))