如果firebase用户已经存在并且已登录,如何在应用程序启动时签入AppDelegate?

Posted

技术标签:

【中文标题】如果firebase用户已经存在并且已登录,如何在应用程序启动时签入AppDelegate?【英文标题】:How to check in AppDelegate, on start of the application, if the firebase user already exists and is logged in? 【发布时间】:2018-10-29 09:03:52 【问题描述】:

我正在使用 swift4 和 Firebase 开发 ios 应用程序,我正在搜索如何在应用程序启动时签入 AppDelegate,如果 firebase 用户已经存在并已登录?

情况是:

用户打开应用程序并使用用户名和密码以及firebase登录。 用户关闭应用。 用户重新打开应用,如果用户从 Firebase 中取消,我会将他重定向到登录/注册页面。

如果我使用var user = firebase.auth().currentUser,用户结果总是登录,但我已将他从 firebase 中取消。

我可以这样做吗?

【问题讨论】:

当用户登录时,将 firebase.auth().currentUser 保存在 userdefaults 中并在用户注销时将其删除,在 appdelgate 中检查 userdefault 是否存在,如果是则携带到主页,如果没有携带到登录页面。 你必须从firebase SDK获取一些API才能知道用户的登录状态,你可以检查一下。 【参考方案1】:

创建一个函数以在用户是否登录时返回布尔值。

func isUserLoggedIn() -> Bool
    
    return Auth.auth().currentUser != nil 
         

然后创建另一个函数将他重定向到任何你想要的地方

    func routeInitialVC(with identifier:String )
    
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc  = storyboard.instantiateViewController(withIdentifier: identifier)
    self.window?.rootViewController = vc
    self.window?.makeKeyAndVisible()

最后,只需将 AppDelegate 中的布尔函数与三元运算符一起使用以使其更短并应用路由函数

        authHelper.isUserLoggedIn() ? routeInitialVC(with: "HomeVC") : routeInitialVC(with: "AuthVC")

【讨论】:

以上是关于如果firebase用户已经存在并且已登录,如何在应用程序启动时签入AppDelegate?的主要内容,如果未能解决你的问题,请参考以下文章

如果用户已经无密码登录,firebase 可以设置密码身份验证吗?

当用户在flutter中使用otp方法登录时,如何检查用户详细信息是不是已经存在于firebase中? [复制]

如何在 vue 上处理 Firebase 身份验证

如果帐户已存在,则创建“登录方式”提供程序伪代码

如果用户已经使用 Vue 和 Firebase 身份验证登录,如何自动重定向用户?

网页中注册界面中如何检测用户名已存在