首页 文章

全球访问Google登录用户名

提问于
浏览
1

我在使用Firebase Auth时出现问题,更具体地说是 user.displayName 查询 . 我在我的应用的第一个屏幕上使用强制性Google登录,因此我可以保证在所有后续屏幕上,用户都有一个名称和一个与他关联的userId .

但是每次我想访问用户名时,我现在所做的就是基本上再次验证用户:

GoogleSignInAccount googleUser = await googleSignIn.signInSilently();
GoogleSignInAuthentication googleAuth = await googleUser.authentication;
FirebaseUser user = await auth.signInWithGoogle(
  accessToken: googleAuth.accessToken,
  idToken: googleAuth.idToken,
);
futureId = user.uid;

print("signed in " + user.displayName);
return user.displayName;

这显然占用了不必要的时间和带宽 .

有没有其他方法可以做到这一点,因为用户之前已经登录过一次?我可以访问Firebase Auth存储的用户数据,以便在其他Firebase产品(如Firestore)中使用吗?

1 回答

  • 3

    FirebaseAuth有一个名为 currentUserasync 方法,可用于访问当前经过身份验证的用户 .

    假例子:

    class SomePage extends StatefulWidget {
      @override
      _SomePageState createState() => new _SomePageState();
    }
    
    class _SomePageState extends State<SomePage> {
      String _userName = "...";
      _getUserAuth(){
        FirebaseAuth.instance.currentUser().then((user){
          setState((){this._userName= user.displayName;}); 
        });
        print(this._userName);
      }
      @override
      Widget build(BuildContext context) {
        return new Center(
          child: new FlatButton(
            child: new Text(this._userName),
            onPressed: _getUserAuth,
          ),
        );
      }
    }
    

相关问题