Firebase Auth:未登出终止APP后用户登录状态及多用户疑问
Firebase Auth创建新用户时自动登出旧用户的原因解析
嘿,我来帮你把这个Firebase Auth的行为理清楚~
首先要明确一个核心点:Firebase Auth在单个设备上同一时间只能维持一个用户的登录会话,这是它的默认设计逻辑,也是你遇到这个问题的根源。
你的操作流程对应的Auth行为拆解
- 当你第一次创建用户并直接终止APP时,Firebase会把这个用户的登录会话持久化到本地设备,下次启动APP时会自动恢复这个会话;
- 当你第二次启动APP并创建新用户时,
createUser(withEmail:password:)方法成功后,Firebase会自动登录这个新用户,同时自动登出之前的已登录用户——这个操作是静默完成的,不会有明显提示,但本地存储的会话已经切换成新用户的了; - 所以当你后续启动APP检测登录状态时,看到的是最后一次创建的那个用户的会话;
- 当你执行
signOut()后,本地的登录会话被清除,再次启动APP自然就检测不到任何已登录用户了。
补充说明
虽然官方文档可能没有把“创建新用户自动登出旧用户”这个点单独拎出来强调,但这是由Firebase Auth的单用户会话模型决定的——它的设计就是一个设备同一时间只能有一个活跃的用户会话。
如果你的业务场景需要在同一设备上切换多个用户,你可以通过保存其他用户的登录凭据(比如自定义Token),之后手动调用signIn(withCustomToken:)来切换用户,但每次切换都会登出当前的活跃用户,无法同时维持多个用户的登录状态。
内容的提问来源于stack exchange,提问作者Ninja
相关产品推荐
相关产品推荐

