5 dart firebase firebase-authentication flutter google-cloud-firestore
我正在使用Flutter和Firebase创建应用程序。我有一些奇怪的问题。我正在创建身份验证,并且工作正常,但是当我尝试向Firestore数据库中添加一些集合时,displayName的记录设置为null。
Future<FirebaseUser> createUser(email, password, displayName) async {
final FirebaseUser user = await _auth.createUserWithEmailAndPassword(
email: email, password: password);
UserUpdateInfo info = new UserUpdateInfo();
info.displayName = displayName;
_auth.updateProfile(info);
Firestore.instance.collection('users').document().setData({
'name': user.displayName,
'uid': user.uid,
'email': user.email,
'isEmailVerified': user.isEmailVerified,
'photoUrl': user.photoUrl,
});
return user;
}
Run Code Online (Sandbox Code Playgroud)
这是创建用户的Future类。
void _handleSubmitted() {
userAuth
.createUser(
emailController.text, passwordController.text, nameController.text)
.then((onValue) {
print("Sign Up button clicked: $onValue");
});
}
Run Code Online (Sandbox Code Playgroud)
单击“注册”按钮时,此方法为处理方法。
和收藏看起来像这张照片。
如果我没记错的话,致电时本地用户配置文件不会立即更新updateProfile
。这意味着您应该只将本地值写入数据库(最简单),或者强制重新加载概要文件(最安全)。
如前所述,这是最简单的方法:
Firestore.instance.collection('users').document().setData({
'name': displayName,
'uid': user.uid,
'email': user.email,
'isEmailVerified': user.isEmailVerified, // will also be false
'photoUrl': user.photoUrl, // will always be null
});
Run Code Online (Sandbox Code Playgroud)
请注意,该值isEmailVerified
始终为false,并且photoUrl
始终null
位于新创建的电子邮件+密码帐户中。
您可以通过调用FirebaseUser.reload()来强制重新加载用户数据:
_auth.updateProfile(info);
await user.reload();
user = _auth.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)
小智 5
要更新用户显示名称和照片网址,这肯定会有所帮助。
FirebaseUser user = await FirebaseAuth.instance.currentUser();
UserUpdateInfo userUpdateInfo = new UserUpdateInfo();
userUpdateInfo.displayName = name;
userUpdateInfo.photoUrl = url;
user.updateProfile(userUpdateInfo);
Run Code Online (Sandbox Code Playgroud)
Firebase Auth 的工作方式很不方便,他们说现在不会改变,所以我做了一个包来解决这个问题,在这里获取:firebase_user_stream
在自述文件中,我解释了问题以及软件包如何修复它们,还有示例等,尽情享受吧!
编辑(2020 年 7 月):
Flutter 的 Firebase 身份验证现在有一个userChanges
流:
每当身份验证状态、id 令牌或配置文件发生更改时都会触发。本质上,这是一种获取当前无状态功能(例如 updateProfile)的实时更改的方法。
归档时间: |
|
查看次数: |
3294 次 |
最近记录: |