При разработке приложения Flutter с Google Sign-In и Firebase Auth
я достиг критической точки после перехода с google_sign_in v6 на v7.
Как и при большинстве миграций, я предполагал, что хорошие части сохранились, а
слабые части улучшились. Вместо этого я столкнулся с новой ошибкой: каждый раз, когда приложение
закрывалось — либо системой, либо пользователем, —
сеанс Google терялся, и пользователю приходилось входить в систему снова.
Я потратил много времени, пытаясь это исправить. Среди других попыток:
- попыткаLightweightAuthentication() — описана как опция тихой
повторной аутентификации, но при этом всегда отображается пользовательский интерфейс. Совершенно не бесшумно.
– поток аутентификации Events («официальный шаблон v7») – вызывал
регрессии: потерялась подсказка «продолжить как» для учетной записи, увеличилось
случаев двойного входа в систему.
– Кэширование токенов вручную с помощью SharedPreferences – в версии 7 нет API
для использования кэшированного электронного письма в качестве подсказки для входа.
После исследования я обнаружил, что это не ошибка, а преднамеренное
решение Google. Поддерживаемый в настоящее время Android SDK
просто не обеспечивает автоматическую повторную аутентификацию. Команда Flutter подтвердила это
и закрыла связанные проблемы как НЕ ПЛАНИРУЕМЫЕ (#172066, #174736).
Существует ли архитектурный подход, который решает проблему сохранения сеанса
без необходимости автоматической повторной аутентификации Google Sign-In v7?