import 'package:get/get.dart'; import 'package:google_sign_in/google_sign_in.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:logger/logger.dart'; String? userName; String? mobileNumber; String? emailAddress; String? firebaseidTokenGoogleSignin; String? packageidTokenGoogleSignin; var logger = Logger( printer: PrettyPrinter( // methodCount: 2, // Number of method calls to be displayed // errorMethodCount: 8, // Number of method calls if stacktrace is provided // lineLength: 120, // Width of the output colors: true, // Colorful log messages // printEmojis: true, // Print an emoji for each log message // printTime: false // Should each log print contain a timestamp ), ); class GoogleAuthService extends GetxController { final GoogleSignIn _googleSignIn = GoogleSignIn(scopes: ['email']); Rx user = Rx(FirebaseAuth.instance.currentUser); @override void onInit() { super.onInit(); FirebaseAuth.instance.authStateChanges().listen((User? newUser) { user.value = newUser; }); } Future handleGoogleSignIn() async { try { // Sign out the user if they are already signed in await _googleSignIn.signOut(); // This will show the Google Sign-In popup and allow the user to select an account. final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); if (googleUser == null) { return 'Google Sign-In canceled'; } // // If the user signed in successfully, we can get their user information. final GoogleSignInAuthentication googleAuth = await googleUser.authentication; final String? accessToken = googleAuth.accessToken; packageidTokenGoogleSignin = googleAuth.accessToken; final String? idToken = googleAuth.idToken; logger.d(packageidTokenGoogleSignin); //new method // Sign in with Google credentials using Firebase Authentication. final AuthCredential credential = GoogleAuthProvider.credential( accessToken: accessToken, idToken: idToken, ); // Use Firebase Authentication to sign in with the provided credential. final UserCredential authResult = await FirebaseAuth.instance.signInWithCredential(credential); // Firebase user information is available in authResult.user. final User? firebaseUser = authResult.user; print("Firebase user ID: ${firebaseUser?.uid}"); print("Firebase user email: ${firebaseUser?.email}"); print("Firebase user display name: ${firebaseUser?.displayName}"); print("Firebase user metadata: ${firebaseUser?.metadata}"); print("Firebase user number: ${firebaseUser?.phoneNumber}"); userName = firebaseUser?.displayName; mobileNumber = firebaseUser?.phoneNumber; emailAddress = firebaseUser?.email; firebaseidTokenGoogleSignin = firebaseUser?.uid; return packageidTokenGoogleSignin; } catch (error) { // Handle any errors that occurred during the sign-in process. print('Error during Google Sign-In: $error'); return null; } } }