Доступ к имени пользователя для входа в Google по всему миру - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблема с Firebase Auth во флаттере, точнее с запросом user.displayName.Я использую обязательный вход в Google на первом экране своего приложения, поэтому могу гарантировать, что на всех последующих экранах у пользователя есть имя и идентификатор пользователя, связанные с ним.

Однако каждый раз, когда я хочу получить доступ к имени пользователя, все, что я сейчас делаю, по сути снова аутентифицирует пользователя с помощью:

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 Ответ

0 голосов
/ 25 апреля 2018

FirebaseAuth имеет метод async, называемый currentUser, который можно использовать для доступа к аутентифицированному в настоящее время пользователю.

Пример фиктивного:

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