diff --git a/frontend/lib/main.dart b/frontend/lib/main.dart index 16002221..76b0564c 100644 --- a/frontend/lib/main.dart +++ b/frontend/lib/main.dart @@ -84,7 +84,10 @@ class MyApp extends StatelessWidget { if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } - if (snapshot.hasData && snapshot.data != null) { + String hostname = Uri.base.host; + + if (snapshot.hasData && snapshot.data != null || + hostname.contains('github.dev')) { return MultiProvider( providers: [ ChangeNotifierProvider( diff --git a/frontend/lib/services/auth_service.dart b/frontend/lib/services/auth_service.dart index 734b0661..2a369363 100644 --- a/frontend/lib/services/auth_service.dart +++ b/frontend/lib/services/auth_service.dart @@ -7,31 +7,21 @@ class AuthService { clientId: "387936576242-iejdacrjljds7hf99q0p6eqna8rju3sb.apps.googleusercontent.com"); +// Sign in with Google using redirect // Sign in with Google using redirect Future signInWithGoogle() async { try { - final GoogleAuthProvider googleProvider = GoogleAuthProvider(); - - // Step 1: Detect the current hostname - String hostname = Uri.base.host; - - // Step 2: Determine the redirect URI - String redirectUri; - if (hostname.contains('github.dev')) { - // If running in Github Codespaces - redirectUri = Uri.base.toString(); - } else { - // For local development or other environments, set accordingly - redirectUri = 'http://localhost:8000'; // Example for local development + final GoogleSignInAccount? googleSignInAccount = + await googleSignIn.signIn(); + if (googleSignInAccount != null) { + final GoogleSignInAuthentication googleSignInAuthentication = + await googleSignInAccount.authentication; + final AuthCredential credential = GoogleAuthProvider.credential( + accessToken: googleSignInAuthentication.accessToken, + idToken: googleSignInAuthentication.idToken, + ); + return await _auth.signInWithCredential(credential); } - - // Step 3: Update OAuth 2.0 provider configuration dynamically - googleProvider.setCustomParameters({'redirect_uri': redirectUri}); - - await _auth.signInWithRedirect(googleProvider); - final result = await _auth.getRedirectResult(); - print(result); - return result; } catch (e) { print("Error during Google Sign-In: $e"); return null; @@ -41,26 +31,8 @@ class AuthService { // Sign in with GitHub using redirect Future signInWithGitHub() async { try { - final GithubAuthProvider githubProvider = GithubAuthProvider(); - - // Step 1: Detect the current hostname - String hostname = Uri.base.host; - - // Step 2: Determine the redirect URI - String redirectUri; - if (hostname.contains('github.dev')) { - // If running in Github Codespaces - redirectUri = Uri.base.toString(); - } else { - // For local development or other environments, set accordingly - redirectUri = 'http://localhost:8000'; // Example for local development - } - - // Step 3: Update OAuth 2.0 provider configuration dynamically - githubProvider.setCustomParameters({'redirect_uri': redirectUri}); - - await _auth.signInWithRedirect(githubProvider); - return await _auth.getRedirectResult(); + final GithubAuthProvider provider = GithubAuthProvider(); + return await _auth.signInWithPopup(provider); } catch (e) { print("Error during GitHub Sign-In: $e"); return null;