我正在尝试构建一个Flutter应用,该应用使用OAuth连接到另一个网站上的用户帐户。这需要导航到网站的OAuth页面,用户可以在其中输入凭据,然后解析用户返回时发送回应用程序的代码。
所以我的问题是:
1)如何导航到OAuth网页?
我发现我可以导航到这样的内部路线:
Navigator.of(context).pushNamed('/some_page');
但是,如果我想转到https://coolsite.com/oauth/authorize
等外部网页,该怎么办?
如何通过打开本地网络浏览器中的网址以及(b)使用应用内网络视图来执行此操作(<)?
2)我应该在验证后将用户重定向到哪个URL,以便他们返回应用程序,以及如何解析响应?
似乎有两种方式:
(a)让用户被重定向到一个空白页面,其中包含URL和页面标题中的授权码。如果这种方法 - 我如何解析页面或网址?
(b)将用户重定向到某种方案,例如my-dart-app://coolsite-oauth?code=xyz". If this method - how do I register the scheme, and would
coolsite-oauth map to a route that I specify when calling
新的MaterialApp`或其他地方?我将如何解析查询参数?
答案 0 :(得分:7)
您可以使用活动服务触发导航:
import 'package:flutter/services.dart';
void launchUrl(String url) {
Intent intent = new Intent()
..action = 'android.intent.action.VIEW'
..url = url;
activity.startActivity(intent);
}
目前没有办法在Flutter中接收导航,但这是我们想要添加的内容。我已创建此问题以跟踪此功能请求:https://github.com/flutter/flutter/issues/357