Files
Regroup/lib/Utils/Common/googleOAuthService.dart
2024-07-12 19:16:47 +05:30

85 lines
3.1 KiB
Dart

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?> user = Rx<User?>(FirebaseAuth.instance.currentUser);
@override
void onInit() {
super.onInit();
FirebaseAuth.instance.authStateChanges().listen((User? newUser) {
user.value = newUser;
});
}
Future<String?> 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;
}
}
}