firebase - 无法在颤动中获取令牌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'>' 的实例
解决方案
如官方文档getIdToken()所示,它实际上返回了一个承诺,因此您将无法直接访问该值。您将需要等待要加载的值并由他们管理。您将需要按照以下代码示例进行处理:
FirebaseAuth.instance.currentUser().then(user => {
if (user != null) {
user.getIdToken().then(token => {
//handle token
}
}
});
如果您想要更直接的方式,下面的行也应该适合您。
var token = await FirebaseAuth.instance.currentUser().getIdToken();
尽管此代码未经测试,但我相信它们应该可以帮助您处理承诺,您应该拥有价值并且将其保存在数据库中应该不会再遇到任何问题。
让我知道这些信息是否对您有帮助!
推荐阅读
- python - Django 模型中的不同时区
- javascript - 保存状态在 React Native 中不能异步工作
- javascript - 使用自定义 NonNullableArrItems 类型将类型转换为 NonNullable 的部分调用
- javascript - 从datalist输入列表如何确定元素的数量
- github - GitHub 和 Fork 问题的可见性更改
- reactjs - 为更新突变解构对象
- ethereum - Web3.js - 错误:返回值无效,它是否耗尽了气体?
- ios - SwiftUI - 计算 ScrollView 中长 GeometryReader 的高度
- apache-spark - 在 pyspark 中读取、转换和输出结果的有效方法
- apache-nifi - Nifi Custom Processor - 未指定传输关系