import 'package:firebase_auth/firebase_auth.dart'; import 'package:google_sign_in/google_sign_in.dart'; import 'package:get/get.dart'; import '../../../core/utils/logger.dart'; class Google { String? token = ''; String? email = ''; String? displayName = ''; String? pictureurl = ''; String? id = ''; String? accessToken = ''; // 登录并返回 Future signInWithGoogle() async { try { // 确保用户已经登录,并获取当前用户的身份验证令牌 final currentUser = FirebaseAuth.instance.currentUser; Logger.d('GoogleLogin', 'Future响应数据: $currentUser'); if (currentUser != null) { // 这里处理您需要使用这个JWT令牌的逻辑,例如将它存储到本地存储中作为凭据。 email = currentUser.email; displayName = currentUser.displayName; id = currentUser.uid; pictureurl = currentUser.photoURL; Logger.d('GoogleLogin', 'Future响应数据pictureurl: $pictureurl'); token = await currentUser.getIdToken(); Logger.d('GoogleLogin', 'Future响应数据tokenResult: $token'); // IdTokenResult token1 = await currentUser.getIdTokenResult(); // Logger.d('GoogleLogin', 'Future响应数据token1: $token1'); return true; } else { UserCredential userCredential = await loginGoogle(); token = await userCredential.user?.getIdToken(); Logger.d('GoogleLogin', 'Future响应数据tokenResult: $token'); if (token != "") { return true; } else { return false; } // Logger.d('GoogleLogin', "user login google: ${userCredential.user?.displayName}"); } } catch (e) { Logger.e('GoogleLogin', "Google 登录异常:$e"); return false; } } // Google登录 Future loginGoogle() async { Logger.d('GoogleLogin', 'loginGoogle:'); final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); email = googleUser?.email; id = googleUser?.id; displayName = googleUser?.displayName; pictureurl = googleUser?.photoUrl; Logger.d('GoogleLogin', 'loginGoogle: $googleUser'); Logger.d( 'GoogleLogin', "user login loginGoogle ${email}${id}${displayName}"); // Obtain the auth details from the request final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication; // Create a new credential, final credential = GoogleAuthProvider.credential( accessToken: googleAuth?.accessToken, idToken: googleAuth?.idToken, ); // Once signed in, return the UserCredential return await FirebaseAuth.instance.signInWithCredential(credential); } // 退出Google登录 Future signOutGoogle() async { // 1. 先退出 Firebase await FirebaseAuth.instance.signOut(); // 2. 安全退出 Google Sign-In final googleSignIn = GoogleSignIn(); // 检查当前是否有已登录的 Google 账号 final currentUser = googleSignIn.currentUser; if (currentUser != null) { await googleSignIn.signOut(); Logger.d('GoogleLogin', 'Google 账号已退出'); } else { Logger.d('GoogleLogin', 'Google 未登录,跳过 signOut'); } } }