【发布时间】:2020-11-28 16:12:56
【问题描述】:
我正在构建一个 Flutter 应用,其中 管理员配置文件 可以创建用户来访问他们的公司。该代码可以正常工作,除非新用户之前是为另一家公司创建的。在这种情况下,来自 FIREBASE AUTH 的类型为 ERROR_EMAIL_ALREADY_IN_USE 的错误会出现。我想要做的只是从 FIREBASE AUTH 中检索分配的 UID,这是将我的数据库中的用户分配给其他公司所必需的。
这是我的代码...
_register(LoginBloc bloc, BuildContext context) async{
final usuarioBloc = Provider.usuarioBloc(context);
if (!formKey.currentState.validate() ) return;
final info = await usuarioProvider.crearUsuarioFirebase(bloc.email, bloc.password, true);
if (info['ok']) {
final keyUserId = info['localId'];
usuarioProvider.crearUsuarioRaiz(keyUserId, _prefs.idEmpresa, bloc.email);
usuario.idUsuario = info['localId'];
usuario.correo = bloc.email;
usuarioBloc.crearUsuarioEmpresa(usuario, usuario.idUsuario, usuario.idEmpresa); //to create user in the Company
print('******* User was Created *************');
} else { //info['ok'] is false
switch (info['mensaje'].code) {
case 'ERROR_EMAIL_ALREADY_IN_USE':
usuario.correo = bloc.email;
// usuario.idUsuario = ????????
// Here I would like to retrieve the UID to assign it to their additional Company
usuarioBloc.crearUsuarioEmpresa(usuario, usuario.idUsuario, usuario.idEmpresa); //to create user in the Company
print('*** User already in use, the user can use his/her usual password ***');
break;
default:
print(info['mensaje'].message); //If it was a different error
}
}
}
在 Provider 中,我有...
Future <Map<String, dynamic>> crearUsuarioFirebase(String email, String password, [bool desdeAdmin = false]) async {
try {
AuthResult result = await _firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
FirebaseUser user = result.user;
return {'ok' : true, 'localId':user.uid, 'email' : user.email};
} catch (e) {
print(e);
return {'ok': false, 'mensaje': e};
}
}
如何在知道用户电子邮件的情况下以编程方式获取 UID?
【问题讨论】:
标签: flutter firebase-realtime-database firebase-authentication