Flutter中amplify_auth_cognito登出后无法重新选择谷歌账号登录问题
解决谷歌登录静默跳转问题
方案1:登录时强制触发账号选择界面
调用signInWithWebUI时,通过配置参数强制弹出谷歌账号选择器,不管之前是否存在登录会话:
await Amplify.Auth.signInWithWebUI( provider: AuthProvider.google, options: SignInWithWebUIOptions( authProviderOptions: const GoogleAuthProviderOptions( prompt: 'select_account', ), ), );
prompt: 'select_account'是谷歌OAuth的标准参数,会强制触发账号选择流程,确保每次登录都能让用户切换或选择账号。
方案2:登出时清除全局会话
如果需要彻底清除所有跨平台的登录状态,包括谷歌端的会话,可以在登出时启用全局登出:
await Amplify.Auth.signOut( options: const SignOutOptions( globalSignOut: true, ), );
这个操作会向Cognito发送全局登出请求,同时尝试清除关联的谷歌会话。不过部分平台可能需要结合方案1使用,因为浏览器端的谷歌缓存可能无法完全通过全局登出清除。
问题根源
默认的signOut()仅清除Amplify本地的登录状态,不会删除谷歌在浏览器/系统中保存的会话凭证。因此再次调用登录时,谷歌会自动复用旧会话完成静默登录,跳过账号选择环节。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

