You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:15:56