已删除的Firebase用户仍可以进行身份验证

已删除的Firebase用户仍可以进行身份验证,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我已经手动删除了Firebase用户,然后从设备(物理iPhone)中删除了应用程序,然后在我安装它时,它通过了身份验证检查,打印了删除的用户电子邮件和所有内容。 这是我用来检查用户是否存在的方法 home: FutureBuilder<FirebaseUser>(future: Provider.of<AuthService>(context).getUser(), builder: (context, AsyncSnapshot<FirebaseUs

我已经手动删除了Firebase用户,然后从设备(物理iPhone)中删除了应用程序,然后在我安装它时,它通过了身份验证检查,打印了删除的用户电子邮件和所有内容。 这是我用来检查用户是否存在的方法

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();
    }
    },
      )
home:FutureBuilder(future:Provider.of(context).getUser(),
生成器:(上下文,异步快照){
if(snapshot.connectionState==connectionState.done){
如果(snapshot.error!=null){
打印(“错误”);
返回文本(snapshot.error.toString());
}
user=snapshot.data;
打印(用户邮箱);
return snapshot.hasData?主屏幕(用户,pos):LoginScreen();
}否则{
返回加载循环();
}
},
)

这怎么可能?有谁能解释一下,当我从Firebase上的Auth Users中删除该用户时,为什么该用户仍然存在?

重新安装该应用程序后,您等待了多长时间?如果在卸载应用程序后不久重新安装,这是iOS上的预期行为

原因有很多,因此我将在下面列出Firebase身份验证的一些方法:

  • Firebase身份验证使用两个令牌对用户进行身份验证,一个是长寿命刷新令牌,另一个是短命ID令牌

  • ID令牌自铸造时起一小时内有效。一旦铸造,一个ID令牌就不能被撤销,这就是为什么Firebase不必对每次交互执行昂贵的额外检查

  • ID令牌将保留在设备上,以便重新启动应用程序可以快速获取用户的身份验证状态,只要令牌尚未过期

  • 在iOS上,ID令牌存储在用户的钥匙链中,当您删除应用程序时,钥匙链不会自动删除。看


  • 再给它一个小时左右的时间,您应该会看到该用户不再经过身份验证。或者,不要删除用户帐户,而是在Firebase身份验证和正在使用的后端服务中禁用它。有关此示例,请参见和。

    快照的确切内容是什么?现在不在家,我无法检查,但这是我从示例中获取的代码,显示了如何验证fire base用户。到现在为止,一切都很顺利。我的意思是,以前我删除了应用程序和用户,它将我发送到登录屏幕,但现在它绕过了身份验证。@DougStevenson?但对于OP来说,剩下的问题是什么是
    AuthService
    ,因为我在Flatter的Firebase身份验证SDK中找不到它:。这是这里描述的吗?如果是这样,你能确保问题包含重现问题所需的最低代码吗?我发现了@FrankvanPuffelen的例子是的,这是同一个例子。明天我会发布更多代码。明天我会再试一次。非常感谢。