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

前端之家收集整理的这篇文章主要介绍了ios – Firebase – 删除和重新安装应用程序不会取消对用户进行身份验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用以下代码验证用户之后(以下是我的代码的修剪版本,因此只显示成功的登录逻辑)…
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属性将再次为零.

解决方法

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

如果您要手动清除数据,您可以随应用程序一起存储一些额外的元数据,并手动调用FirebaseRef.unauth()来清除持久化的会话.请参阅#4747404: Delete keychain items when an app is uninstalled以获得其他参考.

猜你在找的iOS相关文章