Flutter应用Google登录突然失效,抛出PlatformException(exception, Unknown)
Flutter Google登录突然失效,抛出未知PlatformException
我的Flutter应用中原本正常运行的Google登录功能,在1-2个月后测试时突然失效,始终抛出无明确指向的错误:ERROR:flutter/runtime/dart_vm_initializer.cc(41) Unhandled Exception: PlatformException(exception, Unknown, null, null)
已确认Firebase与Google Console中的SHA-1一致,google-services.json文件也已正确更新至对应目录。另外说明:我在Firebase和Google Cloud中有一个删除不足30天的同名同SHA-1的项目。
终端日志
I/flutter (24662): Initializing Firebase I/flutter (24662): Firebase initialized .... E/flutter (24662): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(exception, Unknown, null, null) E/flutter (24662): #0 GoogleSignInApi.getAccessToken (package:google_sign_in_android/src/messages.g.dart:250:7) E/flutter (24662): <asynchronous suspension> E/flutter (24662): #1 GoogleSignInAndroid.getTokens.<anonymous closure> (package:google_sign_in_android/google_sign_in_android.dart:68:15) E/flutter (24662): <asynchronous suspension> E/flutter (24662): #2 GoogleSignInAccount.authentication (package:google_sign_in/google_sign_in.dart:95:9) E/flutter (24662): <asynchronous suspension> E/flutter (24662): #3 _LoginSignupPageState.signInWithGoogle (package:flutter_drive_advisor/screens/login_page.dart:66:51) E/flutter (24662): <asynchronous suspension> E/flutter (24662): #4 _LoginSignupPageState.build.<anonymous closure> (package:flutter_drive_advisor/screens/login_page.dart:210:68) E/flutter (24662): <asynchronous suspension>
login_page.dart 相关代码
Future<UserCredential?> signInWithGoogle() async { // Trigger the authentication flow final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); // 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, ); UserCredential userCredential = await _auth.signInWithCredential(credential); // Save the user's ID to SharedPreferences SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('userId', userCredential.user!.uid); // Once signed in, return the UserCredential return userCredential; }
pubspec.yaml 依赖配置
dependencies: flutter: sdk: flutter http: ^0.13.3 google_maps_flutter: ^2.0.10 autocomplete_textfield: ^2.0.1 flutter_typeahead: ^3.2.1 flutter_native_splash: ^1.2.1 google_fonts: ^4.0.4 shared_preferences: ^2.0.8 firebase_auth: ^4.19.2 #//4.17.8 google_sign_in: ^6.2.1 flutter_facebook_auth: ^3.5.6 permission_handler: ^8.1.6 url_launcher: ^6.0.10 cloud_firestore: ^4.15.8 location: ^4.1.1 #^4.4.0 android_intent: ^2.0.2 app_settings: ^4.1.1 optimize_battery: ^0.0.4 intl: ^0.17.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.6 firebase_core: ^2.30.0 #//2.27.0 collection: ^1.18.0 flutter_local_notifications: ^8.1.1+1
已尝试的解决方法
- 确认Firebase控制台中已正确配置Google登录方式;
- 确认Android应用的SHA-1证书指纹已正确添加至Firebase控制台,通过在Android目录执行
./gradlew signingReport获取; - 检查google-services.json文件已放置在Flutter项目的android/app目录;
- 确保pubspec.yaml中google_sign_in和firebase_core包为最新版本;
- 执行
flutter clean后重新运行应用。
更新
经过多番排查无果后,将问题搁置了几天,1-2天后该功能自行恢复正常,原因未知。
内容的提问来源于stack exchange,提问作者Evangelos Giannopoulos
相关产品推荐
相关产品推荐

