簡體   English   中英

全局訪問Google登錄用戶名

[英]Access Google Sign-In username globally

我在user.displayName有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具有一個稱為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,
      ),
    );
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM