2
respostas

Erro ao detectar que a senha está incorreta

Estou com um erro quando o usuario erra a senha no login:

Future<String?> entrarUsuario(
      {required String email, required String senha}) async {
    try {
      await _firebaseAuth.signInWithEmailAndPassword(
          email: email, password: senha);
      print("Conta logada com sucesso!");
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "user-not-found":
          return "O e-mail não está cadastrado.";
        case "wrong-password":
          return "Senha incorreta.";
      }
      return e.code;
    }
    return null;
  }

Esse é o metodo que cuida de fazer o login ou retorna o erro, creio que não esta funcionando na parte case "wrong-password": return "Senha incorreta.";, pois quando a senha esta errada é retornada a seguinte saida: INVALID_LOGIN_CREDENTIALS ou seja é retornado na parte do codigo: return e.code;

Metodo que chama a entrar usuario:

 _entrarUsuario({required String email, required String senha}) {
    authService.entrarUsuario(email: email, senha: senha).then((String? erro) {
      if (erro == null) {
        showSnackBar(
            context: context,
            mensagem: "Conta logada com sucesso",
            isErro: false);
      } else {
        print(erro);
        showSnackBar(context: context, mensagem: erro);
      }
    });
  }

Aguardo alguma resposta...

2 respostas

Olá, Emanuel!

O código que você compartilhou parece estar correto, mas o erro que você está recebendo (INVALID_LOGIN_CREDENTIALS) não parece corresponder aos códigos de erro esperados ("user-not-found" ou "wrong-password").

Uma possibilidade é que o Firebase esteja retornando um código de erro diferente do que você está esperando. Isso pode acontecer se você estiver usando uma versão diferente da biblioteca Firebase ou se houver alguma configuração específica em seu projeto.

Uma sugestão seria adicionar um default no seu switch para tratar todos os outros códigos de erro que não são "user-not-found" ou "wrong-password". Isso poderia ajudar a identificar o problema. Aqui está um exemplo de como você poderia fazer isso:

Future<String?> entrarUsuario(
      {required String email, required String senha}) async {
    try {
      await _firebaseAuth.signInWithEmailAndPassword(
          email: email, password: senha);
      print("Conta logada com sucesso!");
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "user-not-found":
          return "O e-mail não está cadastrado.";
        case "wrong-password":
          return "Senha incorreta.";
        default:
          return "Erro desconhecido: ${e.code}";
      }
    }
    return null;
  }

Com isso, se o erro for diferente de "user-not-found" ou "wrong-password", ele retornará "Erro desconhecido: " seguido do código do erro. Assim, você poderá ver exatamente qual é o código de erro que está sendo retornado quando a senha está incorreta.

Espero ter ajudado e bons estudos!

Olá, estou com o mesmo erro que o Emanuel e a mensagem de saída é exatamente "INVALID_LOGIN_CREDENTIALS". Não encontrei nada sobre isso nas documentações do Firebase, apenas alguns comentários sobre versões e etc, mas nada que funcionou pra mim.

Tratei outras excessões que funcionaram normalmente, como a 'channel-error'.

Mudei a minha versão do firebase_auth e firebase.core dentro do arquivo "pubspeck.yaml" para a mesma versão usada no projeto das aulas (4.2.9, e 2.4.0, respectivamente) e isso também não funcionou.

Notei que no mesmo arquivo "pubspeck.yaml" as versões de sdk sao diferentes entre a que eu estou usando e a usada na aula.