【问题标题】:firebase auth management in iosios中的firebase身份验证管理
【发布时间】:2018-03-15 13:02:20
【问题描述】:

我正在使用 swift 在 ios 中使用 firebase。登录到应用程序后,我从我的 firebase 数据库中获取数据,这很好。现在,如果我在不注销的情况下关闭我的应用程序并在 30 分钟或大约一个小时后重新运行,我可以看到我的用户已登录,但数据不是来自数据库。在我注销并再次登录后,数据会显示出来。 以下是我在执行操作以获取数据后检查用户是否登录的代码。

if Auth.auth().currentUser?.uid == nil{

        print("Logout call")
        perform(#selector(handleLogout), with: nil, afterDelay: 0)
    }else{
        print("User Logged In")
        fethUser()
    }

运行应用程序一段时间后,我可以看到“用户已登录”消息,但没有获取数据。 我认为这是由于会话或令牌超时而发生的。如果是这种情况,那么如何在我的应用程序中保留登录信息?就像 paytm 或其他应用程序所做的那样,它们不需要每次我们使用应用程序时都登录。

如果帖子有任何问题,请告诉我。提前谢谢你。

【问题讨论】:

  • 何时执行此检查?此外,您可能希望更改为 if Auth.auth().currentUser != nil 并确保在 didFinishLaunchingWithOptions 中调用它。请务必包含 addStateDidChangeListener 并记住 currentUser 可能为 nil,因为 auth 对象尚未完成初始化。查看Manage Users 了解一些最佳实践。这将很难真正回答,因为没有足够的代码来查看发生了什么。

标签: swift firebase firebase-realtime-database firebase-authentication


【解决方案1】:

Firebase 令牌在一小时左右后被禁用。您需要启用令牌服务 API 以允许在令牌过期后刷新令牌。转到https://console.developers.google.com/,点击“启用 API 和服务”,搜索 Token Service API 并启用它。 如果您希望您的应用程序执行自动登录,您可以使用 KeychainAccess https://github.com/kishikawakatsumi/KeychainAccess。因此用户无需在每次启动应用时都登录。

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2013-07-10
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多