使用 signInWithEmailAndPassword() API 在 firebase 中进行身份验证时,我无法获取有效的“当前”用户。
auth.signInWithEmailAndPassword()
我登录后,用户将进入主页
我尝试获取用户的UID,但没有返回有效的用户。该调用发生在异步函数中,如下所示:
currentUser = await auth.currentUser();
当前用户为空。
有什么想法可能导致这种情况吗?
文档建议您使用 auth 状态观察器 在用户登录且 User 对象可用时获取回调。如该链接文档所示:
FirebaseAuth.instance
.authStateChanges()
.listen((User user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
我强烈建议不要依赖于
currentUser
,因为这只能在某个时刻进行检查。观察者保证让您知道用户对象何时可供使用。
如果重新加载返回的 FirebaseUser 怎么办?这对我有用。
const User currentUser = await auth.currentUser;
if (currentUser != null) {
await currentUser.reload();
}
明显简化的代码。注意: auth.currentUser() 现在是 auth.currentUser。
获得用户后只需重新加载一次即可解决您的问题 参考代码:D
final FirebaseAuth _auth = FirebaseAuth.instance;
User currentuser;
bool isloggedin= false;
getUser() async{
User user = _auth.currentUser;
await user?.reload();
user = _auth.currentUser;
if(user !=null)
{
setState(() {
this.currentuser = user;
this.isloggedin=true;
});
}
}
试试这个代码
FirebaseAuth.instance.currentUser?.providerData[0].email