Skip to content

Instantly share code, notes, and snippets.

@Albejr
Last active July 26, 2024 19:19
Show Gist options
  • Save Albejr/a38cdeac247ef177986c99629680afb4 to your computer and use it in GitHub Desktop.
Save Albejr/a38cdeac247ef177986c99629680afb4 to your computer and use it in GitHub Desktop.
Localize Firebase error messages in PT-BR
catchError(err => {
const errorCode = err.code;
let errorMessage = this.VerifyErroCode(errorCode);
if (errorMessage == null) {
errorMessage = err.message;
}
console.log(errorMessage);
})
VerifyErroCode(errorCode: string): string {
// fonte: https://firebase.google.com/docs/reference/js/firebase.auth.Auth
// fonte: https://firebase.google.com/docs/auth/admin/errors?hl=pt-br
switch (errorCode) {
case 'auth/app-deleted':
return 'O banco de dados não foi localizado.';
case 'auth/expired-action-code':
return 'O código da ação o ou link expirou.';
case 'auth/invalid-action-code':
return 'O código da ação é inválido. Isso pode acontecer se o código estiver malformado ou já tiver sido usado.';
case 'auth/user-disabled':
return 'O usuário correspondente à credencial fornecida foi desativado.';
case 'auth/user-not-found':
return 'O usuário não correponde à nenhuma credencial.';
case 'auth/weak-password':
return 'A senha é muito fraca.';
case 'auth/email-already-in-use':
return 'Já existi uma conta com o endereço de email fornecido.';
case 'auth/invalid-email':
return 'O endereço de e-mail não é válido.';
case 'auth/operation-not-allowed':
return 'O tipo de conta correspondente à esta credencial, ainda não encontra-se ativada.';
case 'auth/account-exists-with-different-credential':
return 'E-mail já associado a outra conta.';
case 'auth/auth-domain-config-required':
return 'A configuração para autenticação não foi fornecida.';
case 'auth/credential-already-in-use':
return 'Já existe uma conta para esta credencial.';
case 'auth/operation-not-supported-in-this-environment':
return 'Esta operação não é suportada no ambiente que está sendo executada. Verifique se deve ser http ou https.';
case 'auth/timeout':
return 'Excedido o tempo de resposta. O domínio pode não estar autorizado para realizar operações.';
case 'auth/missing-android-pkg-name':
return 'Deve ser fornecido um nome de pacote para instalação do aplicativo Android.';
case 'auth/missing-continue-uri':
return 'A próxima URL deve ser fornecida na solicitação.';
case 'auth/missing-ios-bundle-id':
return 'Deve ser fornecido um nome de pacote para instalação do aplicativo iOS.';
case 'auth/invalid-continue-uri':
return 'A próxima URL fornecida na solicitação é inválida.';
case 'auth/unauthorized-continue-uri':
return 'O domínio da próxima URL não está na lista de autorizações.';
case 'auth/invalid-dynamic-link-domain':
return 'O domínio de link dinâmico fornecido, não está autorizado ou configurado no projeto atual.';
case 'auth/argument-error':
return 'Verifique a configuração de link para o aplicativo.';
case 'auth/invalid-persistence-type':
return 'O tipo especificado para a persistência dos dados é inválido.';
case 'auth/unsupported-persistence-type':
return 'O ambiente atual não suportar o tipo especificado para persistência dos dados.';
case 'auth/invalid-credential':
return 'A credencial expirou ou está mal formada.';
case 'auth/wrong-password':
return 'Senha incorreta.';
case 'auth/invalid-verification-code':
return 'O código de verificação da credencial não é válido.';
case 'auth/invalid-verification-id':
return 'O ID de verificação da credencial não é válido.';
case 'auth/custom-token-mismatch':
return 'O token está diferente do padrão solicitado.';
case 'auth/invalid-custom-token':
return 'O token fornecido não é válido.';
case 'auth/captcha-check-failed':
return 'O token de resposta do reCAPTCHA não é válido, expirou ou o domínio não é permitido.';
case 'auth/invalid-phone-number':
return 'O número de telefone está em um formato inválido (padrão E.164).';
case 'auth/missing-phone-number':
return 'O número de telefone é requerido.';
case 'auth/quota-exceeded':
return 'A cota de SMS foi excedida.';
case 'auth/cancelled-popup-request':
return 'Somente uma solicitação de janela pop-up é permitida de uma só vez.';
case 'auth/popup-blocked':
return 'A janela pop-up foi bloqueado pelo navegador.';
case 'auth/popup-closed-by-user':
return 'A janela pop-up foi fechada pelo usuário sem concluir o login no provedor.';
case 'auth/unauthorized-domain':
return 'O domínio do aplicativo não está autorizado para realizar operações.';
case 'auth/invalid-user-token':
return 'O usuário atual não foi identificado.';
case 'auth/user-token-expired':
return 'O token do usuário atual expirou.';
case 'auth/null-user':
return 'O usuário atual é nulo.';
case 'auth/app-not-authorized':
return 'Aplicação não autorizada para autenticar com a chave informada.';
case 'auth/invalid-api-key':
return 'A chave da API fornecida é inválida.';
case 'auth/network-request-failed':
return 'Falha de conexão com a rede.';
case 'auth/requires-recent-login':
return 'O último horário de acesso do usuário não atende ao limite de segurança.';
case 'auth/too-many-requests':
return 'As solicitações foram bloqueadas devido a atividades incomuns. Tente novamente depois que algum tempo.';
case 'auth/web-storage-unsupported':
return 'O navegador não suporta armazenamento ou se o usuário desativou este recurso.';
case 'auth/invalid-claims':
return 'Os atributos de cadastro personalizado são inválidos.';
case 'auth/claims-too-large':
return 'O tamanho da requisição excede o tamanho máximo permitido de 1 Megabyte.';
case 'auth/id-token-expired':
return 'O token informado expirou.';
case 'auth/id-token-revoked':
return 'O token informado perdeu a validade.';
case 'auth/invalid-argument':
return 'Um argumento inválido foi fornecido a um método.';
case 'auth/invalid-creation-time':
return 'O horário da criação precisa ser uma data UTC válida.';
case 'auth/invalid-disabled-field':
return 'A propriedade para usuário desabilitado é inválida.';
case 'auth/invalid-display-name':
return 'O nome do usuário é inválido.';
case 'auth/invalid-email-verified':
return 'O e-mail é inválido.';
case 'auth/invalid-hash-algorithm':
return 'O algoritmo de HASH não é uma criptografia compatível.';
case 'auth/invalid-hash-block-size':
return 'O tamanho do bloco de HASH não é válido.';
case 'auth/invalid-hash-derived-key-length':
return 'O tamanho da chave derivada do HASH não é válido.';
case 'auth/invalid-hash-key':
return 'A chave de HASH precisa ter um buffer de byte válido.';
case 'auth/invalid-hash-memory-cost':
return 'O custo da memória HASH não é válido.';
case 'auth/invalid-hash-parallelization':
return 'O carregamento em paralelo do HASH não é válido.';
case 'auth/invalid-hash-rounds':
return 'O arredondamento de HASH não é válido.';
case 'auth/invalid-hash-salt-separator':
return 'O campo do separador de SALT do algoritmo de geração de HASH precisa ser um buffer de byte válido.';
case 'auth/invalid-id-token':
return 'O código do token informado não é válido.';
case 'auth/invalid-last-sign-in-time':
return 'O último horário de login precisa ser uma data UTC válida.';
case 'auth/invalid-page-token':
return 'A próxima URL fornecida na solicitação é inválida.';
case 'auth/invalid-password':
return 'A senha é inválida, precisa ter pelo menos 6 caracteres.';
case 'auth/invalid-password-hash':
return 'O HASH da senha não é válida.';
case 'auth/invalid-password-salt':
return 'O SALT da senha não é válido.';
case 'auth/invalid-photo-url':
return 'A URL da foto de usuário é inválido.';
case 'auth/invalid-provider-id':
return 'O identificador de provedor não é compatível.';
case 'auth/invalid-session-cookie-duration':
return 'A duração do COOKIE da sessão precisa ser um número válido em milissegundos, entre 5 minutos e 2 semanas.';
case 'auth/invalid-uid':
return 'O identificador fornecido deve ter no máximo 128 caracteres.';
case 'auth/invalid-user-import':
return 'O registro do usuário a ser importado não é válido.';
case 'auth/invalid-provider-data':
return 'O provedor de dados não é válido.';
case 'auth/maximum-user-count-exceeded':
return 'O número máximo permitido de usuários a serem importados foi excedido.';
case 'auth/missing-hash-algorithm':
return 'É necessário fornecer o algoritmo de geração de HASH e seus parâmetros para importar usuários.';
case 'auth/missing-uid':
return 'Um identificador é necessário para a operação atual.';
case 'auth/reserved-claims':
return 'Uma ou mais propriedades personalizadas fornecidas usaram palavras reservadas.';
case 'auth/session-cookie-revoked':
return 'O COOKIE da sessão perdeu a validade.';
case 'auth/uid-alread-exists':
return 'O indentificador fornecido já está em uso.';
case 'auth/email-already-exists':
return 'O e-mail fornecido já está em uso.';
case 'auth/phone-number-already-exists':
return 'O telefone fornecido já está em uso.';
case 'auth/project-not-found':
return 'Nenhum projeto foi encontrado.';
case 'auth/insufficient-permission':
return 'A credencial utilizada não tem permissão para acessar o recurso solicitado.';
case 'auth/internal-error':
return 'O servidor de autenticação encontrou um erro inesperado ao tentar processar a solicitação.';
default:
return null;
}
}
@Albejr
Copy link
Author

Albejr commented Sep 3, 2021

@marquimneto, esta não é uma tradução automática.
Após adicionar o arquivo ao seu projeto, você deverá fazer o "import" para referenciando-o.

@Albejr
Copy link
Author

Albejr commented Sep 30, 2021

Estava demorando alguém criar uma biblioteca para isso:
(Apesar de que, já deveria vir nativo do Firebase)
https://github.com/JebBarbas/firebase-error-translator

@EuHigorBarbosa
Copy link

Código do erro Etapas de resolução e descrição - Direto do site do Firebase -
https://firebase.google.com/docs/auth/admin/errors

static const Map<String?, String> errorsMap = {
null: 'Erro desconhecido.',
'auth/claims-too-large' : 'O payload de declarações fornecido para setCustomUserClaims() excede o tamanho máximo permitido de 1.000 bytes.'
'auth/email-already-exists' : 'O e-mail fornecido já está em uso por outro usuário. Cada usuário precisa ter um e-mail exclusivo.'
'auth/id-token-expired' : 'O token de código do Firebase provisionado expirou.'
'auth/id-token-revoked' : 'O token de ID do Firebase foi revogado.'
'auth/insufficient-permission' : 'A credencial usada para inicializar o SDK Admin não tem permissão para acessar o recurso solicitado do Authentication. Consulte Configurar um projeto do Firebase para ver a documentação sobre como gerar uma credencial com as permissões apropriadas e usá-la na autenticação dos SDKs Admin.'
'auth/internal-error' : 'O servidor do Authentication encontrou um erro inesperado ao tentar processar a solicitação. A mensagem de erro incluirá a resposta do servidor de autenticação com informações adicionais. Se o erro persistir, informe o problema ao nosso canal de suporte de Relatório do bug.'
'auth/invalid-argument' : 'Um argumento inválido foi fornecido a um método do Authentication. A mensagem de erro precisa conter informações adicionais.'
'auth/invalid-claims' : 'Os atributos de declaração personalizados fornecidos para setCustomUserClaims() são inválidos.'
'auth/invalid-continue-uri' : 'O URL de confirmação precisa ser uma string de URL válida.'
'auth/invalid-creation-time' : 'O horário da criação precisa ser um string de data UTC válido.'
'auth/invalid-credential' : 'A credencial usada para autenticar os SDKs Admin não pode ser usada para executar a ação desejada. Determinados métodos de autenticação, como createCustomToken() e verifyIdToken(), requerem que o SDK seja inicializado com uma credencial de certificado em oposição a um token de atualização ou uma credencial padrão do aplicativo. Consulte Inicializar o SDK para ver a documentação sobre como autenticar os Admin SDKs com uma credencial de certificado.'
'auth/invalid-disabled-field' : 'O valor fornecido para a propriedade do usuário disabled é inválido. Precisa ser um valor booleano.'
'auth/invalid-display-name' : 'O valor fornecido para a propriedade do usuário displayName é inválido. Precisa ser uma string não vazia.'
'auth/invalid-dynamic-link-domain' : 'O domínio de link dinâmico fornecido não está configurado ou autorizado para o projeto atual.'
'auth/invalid-email' : 'O valor fornecido para a propriedade do usuário email é inválido. Precisa ser um endereço de e-mail de string.'
'auth/invalid-email-verified' : 'O valor fornecido para a propriedade do usuário emailVerified é inválido. Precisa ser um valor booleano.'
'auth/invalid-hash-algorithm' : 'O algoritmo de hash precisa corresponder a uma das strings na lista de algoritmos compatíveis.'
'auth/invalid-hash-block-size' : 'O tamanho do bloco de hash precisa ser um número válido.'
'auth/invalid-hash-derived-key-length' : 'O tamanho da chave derivada do hash precisa ser um número válido.'
'auth/invalid-hash-key' : 'A chave de hash precisa ter um buffer de byte válido.'
'auth/invalid-hash-memory-cost' : 'O custo da memória hash precisa ser um número válido.'
'auth/invalid-hash-parallelization' : 'O carregamento em paralelo do hash precisa ser um número válido.'
'auth/invalid-hash-rounds' : 'O arredondamento de hash precisa ser um número válido.'
'auth/invalid-hash-salt-separator' : 'O campo do separador de "salt" do algoritmo de geração de hash precisa ser um buffer de byte válido.'
'auth/invalid-id-token' : 'O token de código informado não é um token de código do Firebase válido.'
'auth/invalid-last-sign-in-time' : 'O último horário de login precisa ser um string de data UTC válido.'
'auth/invalid-page-token' : 'O token de próxima página fornecido em listUsers() é inválido. Precisa ser uma string não vazia válida.'
'auth/invalid-password' : 'O valor fornecido para a propriedade do usuário password é inválido. Precisa ser uma string com pelo menos seis caracteres.'
'auth/invalid-password-hash' : 'O hash da senha precisa ser um buffer de byte válido.'
'auth/invalid-password-salt' : 'O "salt" da senha precisa ser um buffer de byte válido'
'auth/invalid-phone-number' : 'O valor fornecido para phoneNumber é inválido. Ele precisa ser uma string de identificador compatível com o padrão E.164 não vazio.'
'auth/invalid-photo-url' : 'O valor fornecido para a propriedade do usuário photoURL é inválido. Precisa ser um URL de string.'
'auth/invalid-provider-data' : 'O providerData precisa ser uma matriz válida de objetos UserInfo.'
'auth/invalid-provider-id' : 'O providerId precisa ser um string de identificador de provedor compatível válido.'
'auth/invalid-oauth-responsetype' : 'Apenas um responseType do OAuth deve ser definido como verdadeiro.'
'auth/invalid-session-cookie-duration' : 'A duração do cookie da sessão precisa ser um número válido em milissegundos entre 5 minutos e 2 semanas.'
'auth/invalid-uid' : 'O uid fornecido precisa ser uma string não vazia com no máximo 128 caracteres.'
'auth/invalid-user-import' : 'O registro do usuário a ser importado é inválido.'
'auth/maximum-user-count-exceeded' : 'O número máximo permitido de usuários a serem importados foi excedido.'
'auth/missing-android-pkg-name' : 'Um nome de pacote Android precisa ser fornecido para a instalação do app Android.'
'auth/missing-continue-uri' : 'Um URL de confirmação válido precisa ser fornecido na solicitação.'
'auth/missing-hash-algorithm' : 'É necessário fornecer o algoritmo de geração de hash e seus parâmetros para importar usuários com hashes de senha.'
'auth/missing-ios-bundle-id' : 'A solicitação está sem o ID do pacote do iOS.'
'auth/missing-uid' : 'Um identificador uid é necessário para a operação atual.'
'auth/missing-oauth-client-secret' : 'A chave secreta do cliente de configuração do OAuth é necessária para ativar o fluxo de código do OIDC.'
'auth/operation-not-allowed' : 'O provedor de login fornecido está desativado para o projeto do Firebase. Ative-o na seção Método de login do Console do Firebase.'
'auth/phone-number-already-exists' : 'O phoneNumber fornecido já está sendo usado por um usuário existente. É necessário que cada usuário tenha um phoneNumber exclusivo.'
'auth/project-not-found' : 'Nenhum projeto do Firebase foi encontrado com a credencial usada para inicializar os Admin SDKs. Consulte Configurar um projeto do Firebase para ver a documentação sobre como gerar uma credencial para seu projeto e usá-la na autenticação dos Admin SDKs.'
'auth/reserved-claims' : 'Uma ou mais declarações de usuário personalizadas fornecidas para setCustomUserClaims() são reservadas. Por exemplo, não use as declarações específicas do OIDC, como sub, iat, iss, exp, aud, auth_time etc., como chaves para declarações personalizadas.'
'auth/session-cookie-expired' : 'O cookie da sessão do Firebase fornecido expirou.'
'auth/session-cookie-revoked' : 'O cookie da sessão do Firebase foi revogado.'
'auth/uid-already-exists' : 'O uid fornecido já está sendo usado por um usuário existente. É necessário que cada usuário tenha um uid exclusivo.'
'auth/unauthorized-continue-uri' : 'O domínio da URL de confirmação não está na lista de permissões. Acesse o Console do Firebase para colocar o domínio na lista de permissões.'
'auth/user-not-found' : 'Não há registro de usuário existente correspondente ao identificador fornecido.'
};

@fatecitu
Copy link

fatecitu commented Nov 11, 2022

Exemplo de uma função utilizando os dados da const Errors:

function loginFirebase(email, senha){
  firebase.auth().signInWithEmailAndPassword(email, senha)
    .then(result => {
     //Faça algo
    })
    .catch(error => {
      console.error(error.code)
      alert(`Não foi possível efetuar o login \n Erro: ${errors[error.code]}`)
    })
}

@Tsugami
Copy link

Tsugami commented Mar 7, 2024

Vlw pessoal!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment