flutter - 在 Flutter 中请求 url 后从响应中获取数据
问题描述
我正在尝试在 Flutter 中实现 OAuth 1.0。OAuth 1.0 的工作方式如下: 我的应用程序要求提供一个请求令牌,该令牌由我要对其进行身份验证的服务提供。然后,用户被重定向到属于该服务的页面,在该页面中它授予访问我的应用程序数据的权限。现在我可以请求访问令牌,该令牌将用于签署每个未来的数据请求。
我将这个 OAuth 插件用于 OAuth 程序和Url Launcher 插件来执行请求,因为第一个插件等待 pin 数据,而我希望用户享受完全自动化的过程。我可以通过 OAuth 库请求请求令牌,但以下代码仅启动 url,因此我无法从响应中检索数据。
if (await canLaunch(url)) {
await launch(url, forceWebView: true, enableJavaScript: true);
} else {
throw 'Could not launch $url';
}
用户交互后如何获取数据?
解决方案
您可以查看flutter_web_auth。我将其用于 Unsplash 的 OAuth 登录。
final url = Uri.https('unsplash.com', 'oauth/authorize', {
'response_type': 'code',
'client_id': client_id,
'redirect_uri': redirect_uri,
'scope': scode,
});
final result = await FlutterWebAuth.authenticate(
url: url
.toString()
.replaceAll("%2B", "+"),
callbackUrlScheme: "foobar");
您需要将 '%2B' 替换为 +,因为 url 生成器将 + 符号替换为 %2B。
final code = Uri.parse(result).queryParameters['code'];
您将获得需要将其传递给发布请求以获取令牌的代码。
当然还有其他用于颤振的 OAuth 提供程序,但是我已经在我的一个应用程序中使用了它并且也对其进行了测试。
推荐阅读
- google-apps-script - 无法将 HTML 数据传递到 Code.gs 函数
- reactjs - 导入“react-dom”模块时节点 15 和 16 挂起
- python - 在 Python 中正确完成
- r - Bizarro 管道是否 ->.; 有不推荐使用的缺点吗?
- amazon-web-services - 无法在 Amazon Web Services 中运行两个以上的任务
- apache-spark - 为什么不应该将 Spark 中的本地模式用于生产?
- mysql - Redshift Alter table 命令返回“目标表和源表属性不匹配”。
- python - 如何使用 Python 中的列表更新 PostgreSQL 表?
- django - 具有本机反应的 Django 通道导致此错误“预期 HTTP 101 响应但 '200 OK'”
- vue.js - 当我在 Vue 中使用 ScrollintoView 时,使用 Behavior: Smooth 不起作用