Flutter集成Firebase时Google账号登出失败问题求助
Flutter Firebase Google账号登出失效问题解决
你的问题出在Google账号登出时仅调用了GoogleSignIn.signOut(),未同步清除Firebase Auth的用户会话。Google登录后,Firebase Auth会保留独立的认证状态,只登出GoogleSignIn无法彻底清除Firebase侧的用户信息,导致视觉上登出未生效。
修正后的代码需要同时触发两者的登出操作:
try { switch (user.providerData[0].providerId) { case 'password': await FirebaseAuth.instance.signOut(); break; case 'google.com': final GoogleSignIn googleSignIn = GoogleSignIn(); await googleSignIn.signOut(); // 同步清除Firebase Auth的用户会话 await FirebaseAuth.instance.signOut(); break; } } on FirebaseAuthException catch (e) { showAuthException(e, context); }
另外建议全局复用同一个GoogleSignIn实例,避免每次创建新实例引发的状态不同步问题:
// 在全局或项目初始化位置声明 final GoogleSignIn googleSignIn = GoogleSignIn(); // 登录流程使用该实例 final GoogleSignInAccount? googleUser = await googleSignIn.signIn(); // ...后续Firebase认证逻辑 // 登出流程同样使用该实例 await googleSignIn.signOut(); await FirebaseAuth.instance.signOut();
内容的提问来源于stack exchange,提问作者José Ignacio Duque
相关产品推荐
相关产品推荐

