basic oauth finally but also more dependencies
This commit is contained in:
		
							parent
							
								
									f6ea45d0e2
								
							
						
					
					
						commit
						bb8680e3f6
					
				
					 2 changed files with 38 additions and 9 deletions
				
			
		|  | @ -4,6 +4,8 @@ import 'package:http/http.dart' as http; | |||
| import 'package:url_launcher/url_launcher.dart'; | ||||
| import '../../global.dart' as global; | ||||
| import '../../business_logic/settings.dart' as settings; | ||||
| import 'package:shelf/shelf.dart'; | ||||
| import 'package:shelf/shelf_io.dart' as shelf_io; | ||||
| 
 | ||||
| class App { | ||||
|   late String clientSecret; | ||||
|  | @ -30,6 +32,35 @@ class App { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| Response readAuthcode(Request request) { | ||||
|   Map<String, String> params = request.url.queryParameters; | ||||
|   if (params.containsKey("code") && params["code"] != null) { | ||||
|     String code = params["code"].toString(); | ||||
|     print(code); | ||||
|   } | ||||
|   return Response(200, | ||||
|       body: | ||||
|           "<html><head><meta http-equiv='Refresh' content='0; URL=https://example.com/'></head></html>"); | ||||
| } | ||||
| 
 | ||||
| // returns status code | ||||
| Future<int> handleFullOauth() async { | ||||
|   try { | ||||
|     http.Response response = await doOauthFlow(); | ||||
|     if (response.statusCode != 200) { | ||||
|       return response.statusCode; | ||||
|     } | ||||
| 
 | ||||
|     var handler = const Pipeline().addHandler(readAuthcode); | ||||
|     var server = await shelf_io.serve(handler, 'localhost', 1312); | ||||
|     server.idleTimeout = const Duration(minutes: 5); | ||||
|     server.autoCompress = true; | ||||
|     return 200; | ||||
|   } catch (e) { | ||||
|     return 400; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| Future<http.Response> doOauthFlow() async { | ||||
|   String url = await settings.loadInstanceUrl(); | ||||
|   try { | ||||
|  | @ -49,7 +80,7 @@ Future<http.Response> registerApp(String baseurl) async { | |||
|       headers: global.defaultHeaders, | ||||
|       body: jsonEncode({ | ||||
|         'client_name': global.name, | ||||
|         'redirect_uris': "http://localhost:4040", | ||||
|         'redirect_uris': "http://localhost:1312", | ||||
|         'scopes': "read write", | ||||
|         'website': global.website | ||||
|       })); | ||||
|  | @ -64,7 +95,7 @@ void openBrowserForAuthCode(String baseurl, App app) { | |||
|       query: "client_id=" + | ||||
|           app.clientId + | ||||
|           "&scope=read+write" + | ||||
|           "&redirect_uri=http://localhost:4040" + | ||||
|           "&redirect_uri=http://localhost:1312" + | ||||
|           "&response_type=code"); | ||||
|   launchUrl(url); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue