使用firebase和flutter登录google后获取用户详细信息

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

我试图在用户使用 flutter 中的 firebase 与 google 签名后获取用户详细信息。这是我的代码,它成功地让用户登录,但是当我访问详细信息时,当我将鼠标悬停在红线上时,它会向我显示此消息 - 错误 - 无法无条件访问属性“用户名”,因为接收者可以为“空”

  Future<User?> signInWithGoogle() async {
    FirebaseAuth auth = FirebaseAuth.instance;
    User? user;
    final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
    if (googleUser != null) {
      final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
      final AuthCredential credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );
      try {
        final UserCredential userCredential = await auth.signInWithCredential(credential);
        final user = userCredential.additionalUserInfo.username;
        print(user);
      } on FirebaseAuthException catch (e) {
        if (e.code == 'account-exists-with-different-credential') {

        } else if (e.code == 'invalid-credential') {

        }
      } catch (e) {

      }
    }
    return user;
  }
}

这是用户变量下出现的红线的屏幕截图 - enter image description here

如何获取登录用户的所有详细信息,包括会话信息?

firebase flutter dart firebase-authentication google-cloud-functions
2个回答
1
投票

您看到错误消息的原因在其中得到了很好的解释:值

username
不能像这样使用,因为该值的所有者可以是
null
,因此您需要首先检查它是否为空或不是。

Ti 使用

onAuthStateChanged
监听器获取用户数据:

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

这将使您的身份验证状态管理变得更加容易,并为您使用的任何提供程序通用化工作流程。您还可以用它捕获注销


© www.soinside.com 2019 - 2024. All rights reserved.