我正在尝试在 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';
}
Run Code Online (Sandbox Code Playgroud)
用户交互后如何获取数据?
您可以查看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");
Run Code Online (Sandbox Code Playgroud)
您需要用 + 替换“%2B”,因为 url 生成器将 + 符号替换为 %2B。
final code = Uri.parse(result).queryParameters['code'];
Run Code Online (Sandbox Code Playgroud)
您将获得需要将其传递给发布请求以获取令牌的代码。
当然还有其他用于颤振的 OAuth 提供程序,但我已经在我的一个应用程序中使用了它,并且也对其进行了测试。
| 归档时间: |
|
| 查看次数: |
454 次 |
| 最近记录: |