一尘不染

Firebase-删除并重新安装应用程序不会取消对用户的身份验证

swift

使用以下代码对用户进行身份验证之后(以下是我的代码的精简版本,因此仅显示成功的登录逻辑)…

let firebaseReference = Firebase(url: "https://MY-FIREBASE.firebaseio.com")



FBSession.openActiveSessionWithReadPermissions(["public_profile", "user_friends"], allowLoginUI: true,
    completionHandler: { session, state, error in

        if state == FBSessionState.Open {
            let accessToken = session.accessTokenData.accessToken
            firebaseReference.authWithOAuthProvider("facebook", token: accessToken,
                withCompletionBlock: { error, authData in

                    if error != nil {
                        // Login failed.
                    } else {
                        // Logged in!
                        println("Logged in! \(authData)")
                    }
            })
        }
    })
}

(即启动和运行应用程序,成功登录)。

如果您随后删除该应用程序并将其重新安装在同一设备上,则此调用(我正在应用程序委托中使用该调用来确定用户是否已登录)将始终返回他们已登录。

if firebaseReference.authData == nil {
    // Not logged in
} else {
    // Logged in
}

这是为什么?我本以为删除该应用程序并重新安装它会擦除所有数据。

如果您在iOS模拟器中重置“内容和设置”,然后安装该应用,则该firebaseReference.authData属性将再次为nil


阅读 259

收藏
2020-07-07

共1个答案

一尘不染

Firebase身份验证会话在iOS钥匙串中保留在用户设备上。卸载应用程序时, 不会 删除该应用程序的钥匙串数据。

如果要手动清除数据,则可以将一些其他元数据与应用程序一起存储,并手动调用FirebaseRef.unauth()以清除持久化的会话。

2020-07-07