Flutter firebase 登录用户在登录后返回 NULL currentUser

问题描述 投票:0回答:4

使用 signInWithEmailAndPassword() API 在 firebase 中进行身份验证时,我无法获取有效的“当前”用户。

  1. 我使用用户名和密码登录应用程序
auth.signInWithEmailAndPassword()
  1. 我登录后,用户将进入主页

  2. 我尝试获取用户的UID,但没有返回有效的用户。该调用发生在异步函数中,如下所示:

currentUser = await auth.currentUser();

当前用户为空。

有什么想法可能导致这种情况吗?

firebase flutter firebase-authentication
4个回答
5
投票

文档建议您使用 auth 状态观察器 在用户登录且 User 对象可用时获取回调。如该链接文档所示:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

我强烈建议不要依赖于

currentUser
,因为这只能在某个时刻进行检查。观察者保证让您知道用户对象何时可供使用。


0
投票

如果重新加载返回的 FirebaseUser 怎么办?这对我有用。

const User currentUser = await auth.currentUser;
if (currentUser != null) {
  await currentUser.reload();
}

明显简化的代码。注意: auth.currentUser() 现在是 auth.currentUser。

这可能是重复的:Flutter Firebase 身份验证 currentUser() 返回 null


0
投票

获得用户后只需重新加载一次即可解决您的问题 参考代码: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;
      });
    }
  }

 

0
投票

试试这个代码

FirebaseAuth.instance.currentUser?.providerData[0].email
© www.soinside.com 2019 - 2024. All rights reserved.