Browse Source

fix(登录): 优化第三方登录退出逻辑并替换print为Logger

改进Google登录退出流程,增加安全检查
替换调试打印语句为统一日志工具
移除未使用的Facebook登录相关代码
newdev_shunjiawei
lxm 12 months ago
parent
commit
9430439b4e
  1. 5
      lib/data/services/account_service.dart
  2. 36
      lib/modules/login/controllers/googleLogin.dart

5
lib/data/services/account_service.dart

@ -57,11 +57,12 @@ class AccountService extends GetxService {
/// 返回操作是否成功 /// 返回操作是否成功
Future<bool> logoutThirdParty() async { Future<bool> logoutThirdParty() async {
try { try {
logger.d('lxm--开始退出第三方登录');
final google = Google(); final google = Google();
final facebook = Facebook(); //final facebook = Facebook();
await Future.wait([ await Future.wait([
google.signOutGoogle(), google.signOutGoogle(),
facebook.signOutFacebook(), //facebook.signOutFacebook(),
]); ]);
logger.d('第三方登录退出成功'); logger.d('第三方登录退出成功');
return true; return true;

36
lib/modules/login/controllers/googleLogin.dart

@ -1,6 +1,7 @@
import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart'; import 'package:google_sign_in/google_sign_in.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../../core/utils/logger.dart';
class Google { class Google {
String? token = ''; String? token = '';
@ -16,49 +17,50 @@ class Google {
// 确保用户已经登录,并获取当前用户的身份验证令牌 // 确保用户已经登录,并获取当前用户的身份验证令牌
final currentUser = FirebaseAuth.instance.currentUser; final currentUser = FirebaseAuth.instance.currentUser;
print('Future响应数据: $currentUser'); Logger.d('GoogleLogin', 'Future响应数据: $currentUser');
if (currentUser != null) { if (currentUser != null) {
// 这里处理您需要使用这个JWT令牌的逻辑,例如将它存储到本地存储中作为凭据。 // 这里处理您需要使用这个JWT令牌的逻辑,例如将它存储到本地存储中作为凭据。
email = currentUser.email; email = currentUser.email;
displayName = currentUser.displayName; displayName = currentUser.displayName;
id = currentUser.uid; id = currentUser.uid;
pictureurl = currentUser.photoURL; pictureurl = currentUser.photoURL;
print('Future响应数据pictureurl: $pictureurl'); Logger.d('GoogleLogin', 'Future响应数据pictureurl: $pictureurl');
token = await currentUser.getIdToken(); token = await currentUser.getIdToken();
print('Future响应数据tokenResult: $token'); Logger.d('GoogleLogin', 'Future响应数据tokenResult: $token');
// IdTokenResult token1 = await currentUser.getIdTokenResult(); // IdTokenResult token1 = await currentUser.getIdTokenResult();
// print('Future响应数据token1: $token1'); // Logger.d('GoogleLogin', 'Future响应数据token1: $token1');
return true; return true;
} else { } else {
UserCredential userCredential = await loginGoogle(); UserCredential userCredential = await loginGoogle();
token = await userCredential.user?.getIdToken(); token = await userCredential.user?.getIdToken();
print('Future响应数据tokenResult: $token'); Logger.d('GoogleLogin', 'Future响应数据tokenResult: $token');
if (token != "") { if (token != "") {
return true; return true;
} else { } else {
return false; return false;
} }
// logger.d("user login google: ${userCredential.user?.displayName}"); // Logger.d('GoogleLogin', "user login google: ${userCredential.user?.displayName}");
} }
} catch (e) { } catch (e) {
print("Google 登录异常:$e"); Logger.e('GoogleLogin', "Google 登录异常:$e");
return false; return false;
} }
} }
// Google登录 // Google登录
Future<UserCredential> loginGoogle() async { Future<UserCredential> loginGoogle() async {
print('loginGoogle:'); Logger.d('GoogleLogin', 'loginGoogle:');
final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
email = googleUser?.email; email = googleUser?.email;
id = googleUser?.id; id = googleUser?.id;
displayName = googleUser?.displayName; displayName = googleUser?.displayName;
pictureurl = googleUser?.photoUrl; pictureurl = googleUser?.photoUrl;
print('loginGoogle: $googleUser'); Logger.d('GoogleLogin', 'loginGoogle: $googleUser');
print("user login loginGoogle ${email}${id}${displayName}"); Logger.d(
'GoogleLogin', "user login loginGoogle ${email}${id}${displayName}");
// Obtain the auth details from the request // Obtain the auth details from the request
final GoogleSignInAuthentication? googleAuth = final GoogleSignInAuthentication? googleAuth =
@ -76,7 +78,19 @@ class Google {
// 退出Google登录 // 退出Google登录
Future<void> signOutGoogle() async { Future<void> signOutGoogle() async {
// 1. 先退出 Firebase
await FirebaseAuth.instance.signOut(); await FirebaseAuth.instance.signOut();
await GoogleSignIn().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');
}
} }
} }

Loading…
Cancel
Save