From c69d2f2ef4cb6f47c1f5b4c63d444fe10a458aec Mon Sep 17 00:00:00 2001 From: igorwork <markin.io210@gmail.com> Date: Fri, 19 Jul 2019 13:26:54 +0300 Subject: [PATCH] Implement OAuth2 for third-party apps in iOS. --- ios/Runner/Info.plist | 11 ++++++++++- lib/app.dart | 11 +++++++++-- lib/screens/home.dart | 12 ++++-------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 30ff88c..bd06ac5 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -28,9 +28,18 @@ <key>CFBundleURLSchemes</key> <array> <string>app://com.vereign.app/oauth2</string> - <string>vereign://app.vereign.com</string> </array> </dict> + <dict> + <key>CFBundleTypeRole</key> + <string>Editor</string> + <key>CFBundleURLName</key> + <string>com.vereign.app/auhtorize</string> + <key>CFBundleURLSchemes</key> + <array> + <string>app</string> + </array> + </dict> </array> <key>CFBundleVersion</key> <string>$(FLUTTER_BUILD_NUMBER)</string> diff --git a/lib/app.dart b/lib/app.dart index 18e1165..76cc0a7 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -54,7 +54,7 @@ class _AppState extends State<App> { updateAppMode(Uri uri) { log("Uri $uri"); - if (uri?.path == "/oauth2") { + if (uri?.path == "/auhtorize") { setState(() { _appMode = "oauth"; _invokerURL = uri.queryParameters["invokerUrl"]; @@ -66,6 +66,12 @@ class _AppState extends State<App> { } } + setMode(String mode) { + setState(() { + _appMode = mode; + }); + } + @override Widget build(BuildContext context) { return MaterialApp( @@ -80,7 +86,8 @@ class _AppState extends State<App> { appBar: new AppBar(), body: Home( mode: _appMode, - invokerURL: _invokerURL + invokerURL: _invokerURL, + setMode: setMode ) ), ); diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 4e85c7b..17abd34 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -6,9 +6,10 @@ import 'dart:developer'; import 'dart:convert'; class Home extends StatefulWidget { - Home({@required this.mode, @required this.invokerURL}); + Home({@required this.mode, @required this.invokerURL, @required this.setMode}); final String mode; final String invokerURL; + final void Function(String) setMode; @override _HomeState createState() => _HomeState(); @@ -46,13 +47,8 @@ class _HomeState extends State<Home> { child: Text('Go back'), onPressed: () async { Navigator.of(context).pop(); - - log('Try launch ${widget.invokerURL}'); - if (await canLaunch(widget.invokerURL)) { - await launch("${widget.invokerURL}?token=$token"); - } else { - log('Could not launch ${widget.invokerURL}'); - } + widget.setMode(""); + await launch("${widget.invokerURL}?token=$token"); }, ), ], -- GitLab