我有一个基于StreamBuilder
构建的应用程序,用于监听FirebaseAuth.instance.onAuthStateChanged
return new StreamBuilder<FirebaseUser>(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (BuildContext context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) { ...
我正在尝试重新加载用户,并在验证电子邮件后使用onAuthStateChanged进行提取。 {。{1}}中的User.reload()不足。这与此onAuthStateChanged doesn't get called when email is verified in flutter
类似我认为解决方案是强制注销和登录,但是我对如何做到这一点迷惑不解-例如步骤2,再次登录以触发onAuthStateChanged。
StreamBuilder
答案 0 :(得分:0)
您是否尝试过刷新身份验证令牌?
答案 1 :(得分:0)
使用 _auth.userChanges() 流代替 _auth.onAuthStateChanges()
return StreamBuilder(
stream: _auth.userChanges(),
builder: (ctx, userSnapshot) {
User? user = _auth.currentUser;
if (userSnapshot.hasData && user != null && user.emailVerified) {
// load screen on successful login
}
// fallback to auth screen
},
);
并在您的验证方法中成功验证调用 refreshToken
Future<void> verifyEmail() async {
user = _auth.currentUser;
await user!.reload();
if (user!.emailVerified) {
setState(() {
_isEmailBeingVerified = false;
});
user!.refreshToken;
}
}