Oauth2在Flutter app中流动

Ric*_*ies 6 oauth oauth-2.0 dart flutter

在我正在构建的Flutter应用程序中,我需要根据自定义(非Google/Facebook/Twitter/etc)授权服务器对用户进行身份验证.

为了实现这一点,用户应在网页中填写凭据.为此,可以使用WebView插件.但是,在用户进行身份验证后重定向页面时,应关闭WebView,并将代码传递给最初调用WebView的(Flutter)函数.

我已经做了一些研究,我得到了以下几个选项:

  • 这篇博文使用本地服务器,仍然需要用户手动关闭窗口,这不是一个真正的解决方案(在我看来).
  • 此问题表明已完成与任何OAuth提供程序的集成,但未提供有关浏览器内用户身份验证的任何详细信息.
  • 这个问题与我描述的完全一样,但在底部提到WebView插件提供了一种关闭WebView的方法.虽然它确实有一个close()函数,但我找不到在redirect-URI上触发它并返回验证码的方法.

是否存在解决方案,一旦打开redirect-URI,它会自动关闭浏览器(并返回验证码)?

提前致谢!

Col*_*son 6

我还没有尝试过这个,但我的想法是FlutterWebviewPlugin用来将用户发送到像https://www.facebook.com/v2.8/dialog/oauth?client_id={app-id}&redirect_uri=fbAPP_ID://authorize. 然后为application:openURL:options:(在 iOS 上)和onNewIntent(Android)添加本机处理程序并修改AndroidManifest.xmlInfo.plist注册应用程序以接收来自fbAPP_ID方案的URL 。您可以使用平台通道将深层链接参数传递回 Dart-land 并调用close()Dart 端的 webview。