13

我正在尝试构建一个使用 OAuth 连接到另一个网站上的用户帐户的 Flutter 应用程序。这需要导航到用户可以输入其凭据的站点的 OAuth 页面,然后解析在用户返回时发送回应用程序的代码。

所以我的问题是:

  1. 如何导航到 OAuth 网页?

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

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

但是如果我想去一​​个外部页面https://coolsite.com/oauth/authorize呢?

我该如何做到这一点 (a) 通过在本地 Web 浏览器中打开 URL,以及 (b) 使用应用内 Web 视图?

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

好像有2种方式:

(a) 让用户被重定向到一个空白页面,该页面的 URL 和标题中有授权码。如果这种方法 - 我如何解析页面或 URL?

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

4

1 回答 1

8

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

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

于 2015-11-13T07:58:54.773 回答