Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Tratamento de erro ao redefinir senha com firebase

Não estou conseguindo receber um código de erro ao colocar um email que não consta na base de dados do firebase. Quando eu coloco um email incorreto. Ele não apresenta erro. E quando eu coloco um email incorreto sem o @ e o "." Ele apresenta o erro "invalid-email". Mas, se eu colocar um email incorreto com @ e ".". Ele não apresenta nenhum erro. Mas o email é inexistente.

Código: Future<String?> redefinindoSenha({required String email}) async { try { _firebaseAuth.sendPasswordResetEmail(email: email); } on FirebaseAuthException catch (e) { if (e.code == "invalid-email") { return "Digite um email válido"; } else if (e.code == "channel-error") { return "Campo vazio!"; } else if (e.code == "use-not-found") { return "Email não existe"; } debugPrint("Mensagem pega ${e.message}"); debugPrint("Código pego ${e.code}"); } return null; }

1 resposta
solução!

Olá, Antonio.

Tudo bem?

É importante entender que o Firebase não retorna um erro quando você tenta redefinir a senha para um e-mail que não existe na base de dados. Isso é uma medida de segurança para evitar que pessoas mal-intencionadas descubram se um e-mail específico está cadastrado na base de dados.

No entanto, se você realmente precisa verificar se um e-mail está cadastrado antes de tentar redefinir a senha, você pode usar o método fetchSignInMethodsForEmail do Firebase. Este método retorna uma lista dos métodos de login disponíveis para um determinado e-mail. Se a lista estiver vazia, significa que o e-mail não está cadastrado.

Aqui está um exemplo de como você pode fazer isso:

Future<String?> redefinindoSenha({required String email}) async {
  try {
    final signInMethods = await _firebaseAuth.fetchSignInMethodsForEmail(email);
    if (signInMethods.isEmpty) {
      return "Email não existe";
    } else {
      _firebaseAuth.sendPasswordResetEmail(email: email);
    }
  } on FirebaseAuthException catch (e) {
    if (e.code == "invalid-email") {
      return "Digite um email válido";
    } else if (e.code == "channel-error") {
      return "Campo vazio!";
    }
    debugPrint("Mensagem pega ${e.message}");
    debugPrint("Código pego ${e.code}");
  }
  return null;
}

Espero que isso resolva seu problema! Lembre-se de que essa é apenas uma sugestão e pode não ser a solução perfeita para o seu caso específico. Bons estudos!