Flutter中Firebase邮箱密码+用户名认证遇参数过多错误
解决Firebase邮箱密码认证时添加用户名的参数过多错误
你遇到的问题核心是:createUserWithEmailAndPassword方法不支持直接传入additionalUserInfo或自定义用户名参数,这个方法只接受email和password两个必填参数,所以传额外参数会报"too many positional argument"错误。
正确的实现步骤
Firebase邮箱密码注册的流程是先创建用户,再单独设置用户名(或存入数据库),具体代码如下:
- 先完成邮箱密码用户创建
final userCredential = await FirebaseAuth.instance.createUserWithEmailAndPassword( email: email, password: password, );
- 设置用户的显示名称(即用户名)
如果只是要在Auth用户信息里保存用户名,直接调用updateDisplayName即可:
// 检查用户创建成功后更新显示名称 await userCredential.user?.updateDisplayName(firstName);
- 可选:将用户名存入Firestore(推荐)
如果需要存储更多用户信息,建议把用户名和其他数据存入Firebase Firestore:
if (userCredential.user != null) { await FirebaseFirestore.instance .collection('users') .doc(userCredential.user!.uid) .set({ 'username': firstName, 'email': email, 'createdAt': DateTime.now(), }); }
为什么你的代码会报错
createUserWithEmailAndPassword的官方定义里没有additionalUserInfo这个入参,你不能强行添加这个参数。AdditionalUserInfo是Auth返回给你的对象(用来判断是否是新用户等),不是让你作为参数传进去的。
内容的提问来源于stack exchange,提问作者Abemelek Ermias
相关产品推荐
相关产品推荐

