diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index 889ff289e..c6165b673 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -59,12 +59,7 @@ class {{ service.name | caseUcfirst }} extends Service { query: query.join('&') ); - if(kIsWeb) { - redirect(url.toString()); - return Future.value(); - }else{ - return client.webAuth(url); - } + return client.webAuth(url); {% elseif method.type == 'location' %} params.keys.forEach((key) {if (params[key] is int || params[key] is double) { diff --git a/templates/flutter/lib/src/client_browser.dart.twig b/templates/flutter/lib/src/client_browser.dart.twig index c2cc26bd0..f9e5f42fa 100644 --- a/templates/flutter/lib/src/client_browser.dart.twig +++ b/templates/flutter/lib/src/client_browser.dart.twig @@ -1,4 +1,5 @@ import 'dart:html' as html; +import 'package:flutter_web_auth/flutter_web_auth.dart'; import 'package:http/http.dart' as http; import 'package:http/browser_client.dart'; import 'client_mixin.dart'; @@ -128,6 +129,16 @@ class ClientBrowser extends ClientBase with ClientMixin { @override Future webAuth(Uri url) { - throw UnimplementedError(); - } + return FlutterWebAuth.authenticate( + url: url.toString(), + callbackUrlScheme: "appwrite-callback-" + config['project']!, + ).then((value) async { + Uri url = Uri.parse(value); + final key = url.queryParameters['key']; + final secret = url.queryParameters['secret']; + if (key == null || secret == null) { + throw AppwriteException( + "Invalid OAuth2 Response. Key and Secret not available.", 500); + } + }); } } diff --git a/templates/flutter/pubspec.yaml.twig b/templates/flutter/pubspec.yaml.twig index 95ec7c2a9..0c6796858 100644 --- a/templates/flutter/pubspec.yaml.twig +++ b/templates/flutter/pubspec.yaml.twig @@ -12,10 +12,10 @@ dependencies: sdk: flutter cookie_jar: ^3.0.1 device_info_plus: ^3.1.1 - flutter_web_auth: ^0.3.1 + flutter_web_auth: ^0.4.0 http: ^0.13.4 package_info_plus: ^1.3.0 - path_provider: ^2.0.7 + path_provider: ^2.0.8 web_socket_channel: ^2.1.0 dev_dependencies: