全球访问Google登录用户名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全球访问Google登录用户名相关的知识,希望对你有一定的参考价值。

我在使用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)中使用吗?

答案

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

假例子:

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,
      ),
    );
  }
}

以上是关于全球访问Google登录用户名的主要内容,如果未能解决你的问题,请参考以下文章

如何将 google+ 登录代码放在不同的 java 源文件中

全局访问 Google 登录用户名

从第二个片段访问时 ViewModel 数据丢失状态

单流:通过 Google oAuth 登录用户并授予离线/服务器访问权限?

全球最大同性交友网站的所有用户密码都无法登录!!!

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