Flutter:如何使用 FirebaseAuth idTokenChange?

K.k*_*K.k 5 firebase firebase-authentication flutter

如果我登录过,则无需再次登录即可进入主页。

像这样

FirebaseAuth _auth = FirebaseAuth.instance;
  User firebaseuser = _auth.currentUser;
  if (firebaseuser == null) {
    return runApp(MaterialApp(home: login()));
  } else {
    return runApp(MaterialApp(home: MainPage()));
  }
Run Code Online (Sandbox Code Playgroud)

然而currentUser描述说

您不应使用此 getter 来确定用户当前状态,而应使用 [authStateChanges]、[idTokenChanges] 或 [userChanges] 来订阅更新。

所以我决定使用idTokenChanges.

因为它说

通知用户登录状态(例如登录或注销)的更改以及令牌刷新事件。

我做了这样的

Stream<User> loginstate = await FirebaseAuth.instance.idTokenChanges();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用它。

Dou*_*son 8

您应该authStateChanges仅用于用户登录状态更新,而不是idTokenChanges. 文档中有一个使用其流的示例:

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

idTokenChanges用于获取用户 ID 令牌的更新,该令牌每小时刷新一次。

  • `idTokenChanges` 是否包含 `authStateChanges` 中的所有事件以及令牌更改?因此,如果我想听两个流,我可以只听“idTokenChanges”而不用两个流吗? (4认同)