我有一个应用程序,我需要使用其他网站进行身份验证。
让我通过场景来解释一下:
网站用于(例如:hashnode.com)。顺便说一句,我不能提及该网站,因为它涉及隐私问题。
它没有像Google Authentication那样的API和OAuth。
应用程序获取用户输入的电子邮件和密码,并根据 hashnode.com/signin 上的登录进行检查
然后,如果网站上的登录凭据有效,则应用程序将登录,否则将无法登录。
现在我需要做这件事,但不知道如何针对相应的网站使用 flutter 进行身份验证?
我应该使用http还是dio?执行此操作的流程和替代方案是什么?
谢谢你
我有一个应用程序,我需要使用其他网站进行身份验证。
现在我需要做这件事,但不知道如何针对相应的网站使用 flutter 进行身份验证?
我应该使用http还是dio?执行此操作的流程和替代方案是什么?
谢谢你
在我看来,如果您可以访问网站 api 进行登录,那么使 flutter 中的 ui 与网站相同,并使用 http 或 dio 包通过其 api 向网站后端发出 api 请求。
以上是最好的解决方案,或者如果您想以低性能完成额外的工作,您可以使用 flutter_webview 和 JavaScript 通道。我不会推荐这个,但你可以尝试
首先在其中创建一个WebView和一个Javascript通道。 登录网站后,从网站发出 JWT 令牌,频道将在 flutter 应用程序上接收该令牌。存储该令牌并按照您的意愿使用它。
扑面
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: WebView(
initialUrl: 'https://yourwebsite.com',
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: <JavascriptChannel>[
JavascriptChannel(
name: 'channel1',
onMessageReceived: (JavascriptMessage message) {
// Handle JWT received from website
},
),
].toSet(),
),
);
}
}
在网站上登录后使用以下代码将令牌发送到flutter通道
window.flutter.postMessage(JWT);
当您从网站发出 JWT 时,Javascipt 通道将在 flutter 端接收它,您可以使用它。