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