使用没有 API 和 OAuth 的网站对 flutter 应用程序进行身份验证

问题描述 投票:0回答:1

我有一个应用程序,我需要使用其他网站进行身份验证。
让我通过场景来解释一下:

  • 网站用于(例如:hashnode.com)。顺便说一句,我不能提及该网站,因为它涉及隐私问题。

  • 它没有像Google Authentication那样的API和OAuth。

  • 应用程序获取用户输入的电子邮件和密码,并根据 hashnode.com/signin 上的登录进行检查

  • 然后,如果网站上的登录凭据有效,则应用程序将登录,否则将无法登录。

现在我需要做这件事,但不知道如何针对相应的网站使用 flutter 进行身份验证?
我应该使用http还是dio?执行此操作的流程和替代方案是什么?

谢谢你

我有一个应用程序,我需要使用其他网站进行身份验证。

现在我需要做这件事,但不知道如何针对相应的网站使用 flutter 进行身份验证?
我应该使用http还是dio?执行此操作的流程和替代方案是什么?

谢谢你

flutter authentication mobile basic-authentication
1个回答
0
投票

在我看来,如果您可以访问网站 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 端接收它,您可以使用它。

© www.soinside.com 2019 - 2024. All rights reserved.