热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Firebase-删除并重新安装应用程序不会取消对用户进行身份验证》经验,为你挑选了3个好方法。

使用以下代码对用户进行身份验证后(下面是我的代码的修剪版本,因此只显示成功的登录逻辑)...

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.



1> Rob DiMarco..:

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

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



2> Dari..:

在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
}



3> 小智..:

对于快速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
}


推荐阅读
author-avatar
低调vs完美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有