繁体   English   中英

如何缓存嵌入在重定向 url 中的访问令牌?

[英]How can i cache an access token embedded in a redirect url?

我正在尝试使用本地银行的 API,该银行使用 OAuth2 作为其授权方法。 认证过程如下: 用户点击按钮,webview 应用内启动,用户被定向到 URL A: "https://{API URL}/{constant key}/{redirect url}" 然后他们必须使用他们的银行凭证进行身份验证,下一页会提示他们输入 OTP。 If this is successful, the session token will be embedded in the redirect url as such: Redirect URL: https://{redirect url}/{access token}/{type}

如何将此访问令牌缓存或存储为我的 flutter 代码中的变量,以便我可以将其用于其他 API 调用? 我目前正在使用 flutter webview 插件,启动 webview 并到达不同的 URL 没有问题,但我似乎找不到存储令牌的方法。

对于本地存储:

您可以使用https://pub.dev/packages/shared_preferences ,它使用本地对应项来存储首选项。 它基本上是一个键/值存储。

包装 NSUserDefaults(在 iOS 上)和 SharedPreferences(在 Android 上),为简单数据提供持久存储。 数据异步保存到磁盘。 两个平台都不能保证写入返回后会持久化到磁盘,并且此插件不得用于存储关键数据。

另一种选择是 SQLite 与此 package: https://pub.dev/packages/sqflite

Flutter 的 SQLite 插件。 支持 iOS 和 Android。

您当然也可以使用 Flutter 的文件 I/O 功能,如文档中所述: https://flutter.dev/docs/cookbook/persistence/reading-writing-files

另一种方法是使用缓存管理器 package,它将在后台使用应用程序的缓存和 SQLlite。 也可能是一种解决方案,但操作系统可以随时删除文件。 参见 package: https://pub.dev/packages/flutter_cache_manager

对于远程存储:

Then of course, as most of the flutter developers use firestore ( https://firebase.google.com/docs/firestore ) or cloud storage ( https://firebase.google.com/docs/storage ) from the Firebase Brand,您可以通过这种方式轻松选择 go。 当然,数据将在云中。 不知道这是否符合您的安全要求。

很可能我更喜欢使用第一个提到的方法采用本地持久性方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM