FlutterFire Google认证如何禁止默认选择上次登录的账号
Flutter Firebase Google登录每次弹出账号选择窗口解决方案
这个问题的核心是Google认证服务默认会复用用户已授权的会话信息,不会重复唤起账号选择界面,可通过以下配置实现强制弹窗:
实现步骤
- 优先通过配置参数强制服务端返回账号选择界面,无需依赖本地登出逻辑,适配所有场景
- 可选增加本地登出逻辑作为双重保障,避免本地缓存的旧会话影响认证流程
- 完成上述配置后再执行常规的Google认证、Firebase登录逻辑即可
代码示例
import 'package:google_sign_in/google_sign_in.dart'; import 'package:firebase_auth/firebase_auth.dart'; // 初始化Google登录实例时添加核心配置 final GoogleSignIn _googleSignIn = GoogleSignIn( scopes: <String>[ 'email', // 按需添加其他需要的授权scope ], // 核心配置:强制每次显示账号选择弹窗 signInOption: SignInOption.selectAccount, ); Future<UserCredential?> handleGoogleSignIn() async { // 可选:调用登出清除本地残留会话,双重保险 await _googleSignIn.signOut(); // 触发认证流程,此时会固定弹出账号选择窗口 final GoogleSignInAccount? googleUser = await _googleSignIn.signIn(); if (googleUser == null) { // 用户主动取消登录,直接返回空 return null; } // 后续常规Firebase认证逻辑 final GoogleSignInAuthentication googleAuth = await googleUser.authentication; final OAuthCredential credential = GoogleAuthProvider.credential( accessToken: googleAuth.accessToken, idToken: googleAuth.idToken, ); return await FirebaseAuth.instance.signInWithCredential(credential); }
注意:如果你的应用限制仅指定域名的企业账号可登录,保留
hostedDomain配置的同时添加上述signInOption配置即可,两项配置不会冲突。
内容的提问来源于stack exchange,提问作者Samuel Panzieri
相关产品推荐
相关产品推荐

