使用以下代码对用户进行身份验证后(下面是我的代码的修剪版本,因此只显示成功的登录逻辑)...
let firebaseReference = Firebase(url: "https://MY-FIREBASE.firebaseio.com")
Run Code Online (Sandbox Code Playgroud)
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)")
}
})
}
})
}
Run Code Online (Sandbox Code Playgroud)
(即启动并运行应用程序,成功登录).
如果您随后删除了应用程序并在同一设备上重新安装,则此调用(我在应用程序委托中使用以确定用户是否已登录)将始终返回他们已登录的状态.
if firebaseReference.authData == nil {
// Not logged in
} else {
// Logged in
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?我本来以为删除应用程序并重新安装它应该擦除所有数据.
如果您重置iOS模拟器中的内容和设置,并安装该应用程序,该firebaseReference.authData属性将再次nil.
每当我第一次运行我的应用程序(仅当我卸载并重新安装应用程序时),我试图在 Flutter 中获取用户的登录状态,以下代码返回用户。
我已经尝试获取用户whenComplete并then返回相同的结果。
FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
FirebaseUser user = await _firebaseAuth.currentUser();
return user;
Run Code Online (Sandbox Code Playgroud)
返回的用户是我的 Android 设备上的平台用户,如果我在安装后重新加载我的应用程序,用户将被删除。
编辑:
有趣的是最小化应用程序会删除未知用户。