当前位置: 首页 > 知识库问答 >
问题:

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

黄跃
2023-03-14

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

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 模拟器中重置“内容”和“设置”,然后安装该应用,则“引用”属性将再次为

共有3个答案

郏兴贤
2023-03-14

对于swift 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
}
马梓
2023-03-14

添加下面的代码在didFinishLaunchingWithOptions函数的末尾(返回true之前)应用委托工作迅速。

迅捷的方式

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 Auth
    do {
        try Auth.auth().signOut()
    }catch {
        
    }
    // go to beginning of app
} else {
    //go to where you want
}

斯威夫特3.*

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
}
糜宜民
2023-03-14

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

如果您希望手动清除数据,您可以将一些额外的元数据与应用程序一起存储,并手动调用FirebaseRef.unauth()来清除持久化的会话。有关其他参考,请参阅#4747404:卸载应用程序时删除钥匙扣项目。

 类似资料:
  • 问题内容: 使用以下代码对用户进行身份验证之后(以下是我的代码的精简版本,因此仅显示成功的登录逻辑)… (即启动和运行应用程序,成功登录)。 如果您随后删除该应用程序并将其重新安装在同一设备上,则此调用(我正在应用程序委托中使用该调用来确定用户是否已登录)将始终返回他们已登录。 这是为什么?我本以为删除该应用程序并重新安装它会擦除所有数据。 如果您在iOS模拟器中重置“内容和设置”,然后安装该应用

  • 问题内容: 我在使用Google登录我的应用程序+ Firebase时遇到问题。 假设有3个用户在同一时间登录我的应用程序。 我用于检查用户的代码是否已登录: 场景:我用多个帐户签名并注销。一切正常。 但是,当我删除该应用程序并再次安装时。该用户被自动恢复。 我尝试使用登录并卸载应用程序。不过,如果我再次安装它,则直接将我带给用户。 我尝试使用登录并卸载应用程序。不过,如果我再次安装它,则直接将我

  • 我有一个问题,我使用谷歌登录我的应用程序Firebase。 假设有三个用户,我在一次登录我的应用程序。 我用于检查用户的代码是否已登录: 场景:我用多个账号登录,注销。一切正常。 但是当我删除应用程序并再次安装它时。用户被自动返回。 我尝试使用登录并卸载该应用程序。不过,如果我再次安装它,它直接将我带到用户。 我尝试使用登录并卸载该应用程序。不过,如果我再次安装它,它直接将我带到用户。 我甚至尝试

  • 我的应用/构建。格雷德尔: 在调试模式下,我成功地完成了auth。由Firebase授权。 输入电话号码 好的。工作正常。 但当我想在发布模式下执行此操作时,我会遇到下一个错误:

  • 我正在尝试使用Facebook凭据实现网站登录。当我在Facebook小部件上按“取消”或“确定”时,我会看到不同的反应。当我按Cancel时,我看到以下内容 这是可预测的。但是当我按OK时,我看到另一个错误。 我在本地运行的网站Ubuntu 14.04 apache Web服务器与80端口。我怀疑错误的Facebook应用程序设置,但不知道调试什么。 此外,我可以提到推特登录也在相同的设置下工作

  • 对于我的android应用程序,我使用的是google firebase auth,问题是在卸载和重新安装该应用程序后,它仍然跳过登录页面并进行会话,我使用的是android 7,我根据这里的答案清理了备份,在Manifest.xml中添加了和但没有帮助。有谁能帮上忙吗?