Как я могу кэшировать токен доступа, встроенный в URL перенаправления? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь использовать API из местного банка, который использует OAuth2 в качестве метода авторизации. Процесс аутентификации выглядит следующим образом: пользователь нажимает на кнопку, веб-просмотр в приложении запускается, и пользователь перенаправляется на URL-адрес A: «https://{API URL} / {константный ключ} / {URL-адрес перенаправления}». Затем он должен аутентифицироваться с помощью своегобанковские учетные данные, и на следующей странице будет предложено ввести OTP. В случае успеха токен сеанса будет встроен в URL-адрес перенаправления следующим образом: URL-адрес перенаправления: https://{redirect url} / {токен доступа} / {тип}

Как можно кэшировать или сохранить этот токен доступав качестве переменной в моем коде флаттера, чтобы я мог использовать его для других вызовов API? В настоящее время я использую плагин flutter webview, и у меня нет проблем с запуском webview и достижением разных URL, но я не могу найти способ хранения токена.

1 Ответ

0 голосов
/ 10 ноября 2019

Для локального хранения:

Вы можете использовать https://pub.dev/packages/shared_preferences, который использует собственные аналоги для хранения настроек. В основном это хранилище ключей / значений.

Обертки NSUserDefaults (на iOS) и SharedPreferences (на Android), обеспечивающие постоянное хранилище для простых данных. Данные сохраняются на диск асинхронно. Ни одна из платформ не может гарантировать, что записи будут сохранены на диск после возврата, и этот плагин не должен использоваться для хранения критических данных.

Другой альтернативой будет SQLite с этим пакетом: https://pub.dev/packages/sqflite

Плагин SQLite для Flutter. Поддерживает как iOS, так и Android.

Конечно, вы также можете использовать возможности файлового ввода-вывода Flutter, как описано в документации: https://flutter.dev/docs/cookbook/persistence/reading-writing-files

Другой путь - использованиепакет диспетчера кэша, который будет использовать кеш приложения вместе с SQLlite в фоновом режиме. Может также быть решением, но файлы могут быть удалены ОС в любой момент времени. См. Пакет по адресу: https://pub.dev/packages/flutter_cache_manager

для удаленного хранения:

Затем, конечно, поскольку большинство разработчиков флаттера используют firestore (https://firebase.google.com/docs/firestore) или облачное хранилище (https://firebase.google.com/docs/storage) от бренда Firebase, вы можете легко выбрать этот путь. Конечно, тогда данные будут в облаке. Не знаю, соответствует ли это вашим требованиям безопасности.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...