如何从 Flutter 应用程序导航到网页? (OAuth)

How to navigate to a web page from within a flutter app? (OAuth)

我正在尝试构建一个使用 OAuth 连接到另一个网站上的用户帐户的 Flutter 应用程序。这需要导航到网站的 OAuth 页面,用户可以在其中输入他们的凭据,然后解析当用户 returns.

时发送回应用程序的代码

所以我的问题是:

  1. 如何导航到 OAuth 网页?

我发现我可以像这样导航到内部路线:

Navigator.of(context).pushNamed('/some_page');

但是如果我想转到像 https://coolsite.com/oauth/authorize 这样的外部页面怎么办?

如何 (a) 在本地网络浏览器中打开 URL,以及 (b) 使用 in-app 网络视图?

  1. 身份验证后我应该将用户重定向到什么 URL 以便他们返回到应用程序,我该如何解析响应?

好像有两种方法:

(a) 让用户被重定向到一个空白页面,其中包含 URL 中的授权代码和页面标题。如果使用此方法 - 我如何解析页面或 URL?

(b) 将用户重定向到某种方案,例如 my-dart-app://coolsite-oauth?code=xyz。如果此方法 - 我如何注册该方案,并将 cool site-OAuth 映射到我在调用 new MaterialApp 或其他地方指定的路由?我将如何解析查询参数?

您可以使用 activity 服务触发导航:

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