我已经手动删除了Firebase User,然后从设备(物理iPhone)中删除了该应用程序,然后在我安装它时,它通过了auth检查,并打印了删除的用户电子邮件和所有内容。 这是我用来检查用户是否存在的方法
home: FutureBuilder<FirebaseUser>(future: Provider.of<AuthService>(context).getUser(),
builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.error != null) {
print('error');
return Text(snapshot.error.toString());
}
user = snapshot.data;
print(user.email);
return snapshot.hasData ? HomeScreen(user, pos) : LoginScreen();
} else {
return LoadingCircle();
}
},
)
这怎么可能?任何人都可以解释一下,当我从Firebase上的“身份验证用户”中删除用户时,为什么该用户仍然存在吗?
答案 0 :(得分:3)
重新安装应用程序后,您等待了多长时间?如果您在卸载应用后不久重新安装了该应用,则这是iOS上的预期行为。
这样做的原因有很多,所以我将在下面列出Firebase身份验证的方式:
Firebase身份验证使用两个令牌对用户进行身份验证,即长寿命的刷新令牌和短寿命的ID令牌。
该ID令牌自铸造后的一小时内有效。铸造后, ID令牌就无法撤消,这就是为什么Firebase不必在每次交互时都进行昂贵的额外检查。
ID令牌保留在设备上,因此只要令牌没有过期,重新启动应用程序即可快速获取用户的身份验证状态。
在iOS上,ID令牌存储在用户的钥匙串中,当您删除应用程序时,该令牌不会自动删除。参见Firebase - Deleting and reinstalling app does not un-authenticate a user
再等待一个小时左右,您应该会看到该用户不再通过身份验证。或者,不要删除用户帐户,而是在您正在使用的后端服务的Firebase身份验证和中将其禁用。有关此示例,请参见Firebase still retrieving authData after deletion和five tips to secure your app。