首页 > 解决方案 > 无法在颤动中获取令牌ID

问题描述

我正在使用下面的代码在 Flutter 应用程序中注册新用户,并将 Firebase 作为后端,但是当我尝试将其保存为将其存储为null.

FirebaseAuth.instance
                      .createUserWithEmailAndPassword(
                      email: emailInputController.text,
                      password: pwdInputController.text)
                      .then((currentUser) =>
                      Firestore.instance
                          .collection("users")
                          .document(currentUser.user.uid)
                          .setData({
                        "id": currentUser.user.uid,
                        "tokenId": currentUser.user.getIdToken(),
                        "fullname": fullNameInputController.text,
                      })

我在有关 tokenId 的日志中收到此信息

无效参数:'Future<'IdTokenResult'>' 的实例

标签: firebasefluttergoogle-cloud-firestorefirebase-authentication

解决方案


如官方文档getIdToken()所示,它实际上返回了一个承诺,因此您将无法直接访问该值。您将需要等待要加载的值并由他们管理。您将需要按照以下代码示例进行处理:

FirebaseAuth.instance.currentUser().then(user => {
        if (user != null) {
           user.getIdToken().then(token => {
             //handle token
           }
        }
});

如果您想要更直接的方式,下面的行也应该适合您。

var token = await FirebaseAuth.instance.currentUser().getIdToken();

尽管此代码未经测试,但我相信它们应该可以帮助您处理承诺,您应该拥有价值并且将其保存在数据库中应该不会再遇到任何问题。

让我知道这些信息是否对您有帮助!


推荐阅读