首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FirebaseAuth上为已登录的iOS用户进行自动登录

如何在FirebaseAuth上为已登录的iOS用户进行自动登录
EN

Stack Overflow用户
提问于 2020-11-20 16:10:27
回答 1查看 647关注 0票数 1

使用Swift5.3.1、XCode12.2、iOS14.2、

我正试图在我的iOS应用程序中为我的Firebase-8月用户创建一个自动登录。

iOS的Firebase文档中,它说:

因此,在阅读了这些文档之后,我的初步实现如下:

在AppDelegate.Swive的didFinishLaunchingWithOptions方法中,我实现了下面的if-语句,该语句检查currentUser的零状态。如果不是零,那么到主屏幕的路由就发生了。

代码语言:javascript
复制
// old Autologin
if let _ = Auth.auth().currentUser {
    self.changeRootViewController(.mainscreen, animated: false)
}

有了上面的实现,一切似乎都正常了。自动登录的行为确实运行良好。

然而,我意识到自动登录将永远保持不变(也就是说,在没有应用程序使用的两周后,每当我再次打开应用程序时,非零检查仍然会通过)。

我问自己:自动登录不是应该过期吗?

此外,currentUser属性(如"isEmailVerified")似乎没有考虑到当前的FirebaseAuth状态。例如,如果用户按下了电子邮件验证链接,那么它根本不影响Auth.auth().currentUser.isEmailVerified属性!自动登录将显示Auth.auth().currentUser上的旧属性。

然后,我在FirebaseAuth用户类上找到了以下方法:

这里是我从reload文档中扣除的最新实现:

代码语言:javascript
复制
// new Autologin
Auth.auth().currentUser?.reload(completion: { (error) in
    if let error = error {
        log.error("Auth.auth().currentUser reload faild with error: \(String(describing: error))")
    } else if let user = Auth.auth().currentUser {
        self.changeRootViewController(.mainscreen, animated: false)
    }
})

问题:

  1. 是否可能Firebase.关于当前登录的用户签入的文档完全误导了iOS上的自动登录?
  2. 使用reload以便更新Auth.auth().currentUser字段更好地完成自动登录是否正确?
  3. 或者,是否有更好的方式在iOS上与FirebaseAuth用户进行自动登录?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 16:22:13

自动保持用户身份验证状态(到iOS上的密钥链),并在应用程序重新启动时尝试恢复它。此外,它每小时刷新身份验证状态(更具体地说:它所基于的ID令牌)。只要这些刷新成功,身份验证会话就不会自动过期。

要强制更新ID令牌,从而强制更新本地用户配置文件,可以在用户对象上调用reload。这是最常见的做法,以获取更新的属性的最新值,在服务器上的带外(因此,在客户端无法知道的方式),如isEmailVerified

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64932913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档