为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

iOS
慕盖茨4494581 2019-10-31 12:52:38
在使用以下代码对用户进行身份验证之后(以下是我的代码的精简版本,因此仅显示成功的登录逻辑)...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。
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

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


如果要手动清除数据,则可以将一些其他元数据与应用程序一起存储,并手动调用FirebaseRef.unauth()以清除持久化的会话。请参阅#4747404:在卸载应用程序时删除钥匙串项,以获取其他参考。


查看完整回答
反对 回复 2019-10-31
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

在AppDelegate的didFinishLaunchingWithOptions函数(在返回true之前)的末尾添加以下代码可以快速进行。


let userDefaults = NSUserDefaults.standardUserDefaults()

if userDefaults.valueForKey("appFirstTimeOpend") == nil {

    //if app is first time opened then it will be nil

    userDefaults.setValue(true, forKey: "appFirstTimeOpend")

    // signOut from FIRAuth

    do {

        try FIRAuth.auth()?.signOut()

    }catch {


    }

    // go to beginning of app

} else {

   //go to where you want

}


查看完整回答
反对 回复 2019-10-31
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

对于快速4相同的答案:


let userDefaults = UserDefaults.standard

if userDefaults.value(forKey: "appFirstTimeOpend") == nil {

    //if app is first time opened then it will be nil

    userDefaults.setValue(true, forKey: "appFirstTimeOpend")

    // signOut from FIRAuth

    do {

        try Auth.auth().signOut()

    }catch {


    }

    // go to beginning of app

} else {

    //go to where you want

}


查看完整回答
反对 回复 2019-10-31
  • 3 回答
  • 0 关注
  • 667 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信