Solucionar erros de autenticação do Firebase no iOS

Se o retorno de chamada de conclusão dos métodos de autenticação receber um argumento NSError diferente de nulo, isso significa que ocorreu um erro. Para enviar esse erro para a lógica correta de solução no seu código de produção, compare seu código aos erros comuns e específicos do método listados a seguir.

Alguns erros são resolvidos por ações específicas do usuário. FIRAuthErrorCodeUserTokenExpired, por exemplo, é resolvido quando o usuário faz login novamente, enquanto FIRAuthErrorCodeWrongPassword solicita que o usuário informe a senha certa.

Salvo nos casos de FIRAuthErrorCodeNetworkError ou FIRAuthErrorCodeTooManyRequests, repetir uma operação com erro usando os mesmos argumentos nunca obterá êxito. Não suponha que a operação funcionou do lado do servidor.

Quando investigar ou registrar erros, revise o dicionário userInfo. FIRAuthErrorNameKey contém uma string dos nomes de erros entre plataformas que pode ser usada para identificá-los. NSLocalizedDescriptionKey contém uma descrição do erro, voltada para o desenvolvedor e não para o usuário. NSUnderlyingErrorKey contém o erro subjacente (se houver) que causou o erro em questão.

Além dos campos principais mencionados anteriormente, pode haver outros no dicionário userInfo que podem ser considerados úteis no dianóstico de erros.

Códigos de erro comuns a todos os métodos de API

Código Significado
FIRAuthErrorCodeNetworkError Indica que ocorreu um erro na rede durante a operação.
FIRAuthErrorCodeUserNotFound Indica que a conta de usuário não foi encontrada. Pode ocorrer se a conta de usuário foi excluída.
FIRAuthErrorCodeUserTokenExpired Indica que o token atual do usuário expirou porque, por exemplo, ele alterou a senha da conta em outro dispositivo. Solicite novo login neste dispositivo.
FIRAuthErrorCodeTooManyRequests Indica que a solicitação foi bloqueada após o dispositivo chamador fazer um número anormal de solicitações aos servidores do Firebase Authentication. Tente novamente mais tarde.
FIRAuthErrorCodeInvalidAPIKey Indica que o app foi configurado com uma chave de API inválida.
FIRAuthErrorCodeAppNotAuthorized Indica que o app não tem autorização para usar o Firebase Authentication com a chave de API fornecida. Acesse o Console de APIs do Google e, na guia de credenciais, verifique se o código do pacote do seu app está na lista de permissões da chave de API que você está usando.
FIRAuthErrorCodeKeychainError Indica que ocorreu um erro de acesso do conjunto de chaves. Os campos NSLocalizedFailureReasonErrorKey e NSUnderlyingErrorKey do dicionário NSError.userInfo conterão mais informações sobre o erro encontrado.
FIRAuthErrorCodeInternalError Indica que ocorreu um erro interno. Informe o erro com todo o objeto NSError.

Códigos de erro específicos do método

FIRAuth

fetchProvidersForEmail:completion:

Código Significado
FIRAuthErrorCodeInvalidEmail Indica que o endereço de e-mail informado está incorreto.

signInWithEmail:password:completion:

Código Significado
FIRAuthErrorCodeOperationNotAllowed Indica que as contas de e-mail e senha não estão ativadas. Ative-as na seção "Autenticação" do Console do Firebase.
FIRAuthErrorCodeInvalidEmail Indica que o endereço de e-mail informado está incorreto.
FIRAuthErrorCodeUserDisabled Indica que a conta do usuário está desativada.
FIRAuthErrorCodeWrongPassword Indica que o usuário tentou fazer login com uma senha incorreta.

signInWithCredential:completion:

Código Significado
FIRAuthErrorCodeInvalidCredential Indica que a credencial informada é inválida. Isso pode acontecer se a credencial estiver expirada ou incorreta.
FIRAuthErrorCodeInvalidEmail Indica que o endereço de e-mail está incorreto, se a credencial for do tipo EmailPasswordAuthCredential.
FIRAuthErrorCodeOperationNotAllowed Indica que contas com o provedor de identidade representado pela credencial não estão ativadas. Ative-as na seção "Autenticação" do Console do Firebase.
FIRAuthErrorCodeEmailAlreadyInUse Indica que o e-mail informado pela credencial como, por exemplo, o de um token de acesso do Facebook, já está em uso por uma conta existente que não pode ser autenticada com esse método de login. Chame fetchProvidersForEmail para o e-mail desse usuário e, depois, solicite que ele faça login com um dos provedores de login retornados. Esse erro é gerado somente se a configuração "Uma conta por endereço de e-mail" estiver ativada no Firebase console, nas configurações de Autenticação.
FIRAuthErrorCodeUserDisabled Indica que a conta do usuário está desativada.
FIRAuthErrorCodeWrongPassword Se a credencial for do tipo EmailPasswordAuthCredential, indica que o usuário tentou fazer login com uma senha incorreta.

signInAnonymouslyWithCompletion:

Código Significado
FIRAuthErrorCodeOperationNotAllowed Indica que as contas anônimas não estão ativadas. Ative-as na seção "Autenticação" do Console do Firebase.

signInWithCustomToken:completion:

Código Significado
FIRAuthErrorCodeInvalidCustomToken Indica um erro de validação com o token personalizado.
FIRAuthErrorCodeCustomTokenMismatch Indica que a conta de serviço e a chave de API pertencem a diferentes projetos.

createUserWithEmail:password:completion:

Código Significado
FIRAuthErrorCodeInvalidEmail Indica que o endereço de e-mail informado está incorreto.
FIRAuthErrorCodeEmailAlreadyInUse Indica que o e-mail usado para inscrição já existe. Chame fetchProvidersForEmail para verificar os mecanismos de login usados pelo usuário e solicite que ele faça login com um deles.
FIRAuthErrorCodeOperationNotAllowed Indica que as contas de e-mail e senha não estão ativadas. Ative-as na seção Autenticação do Firebase console.
FIRAuthErrorCodeWeakPassword Indica uma tentativa de definição de uma senha considerada muito fraca. O campo NSLocalizedFailureReasonErrorKey no objeto de dicionário NSError.userInfo conterá uma explicação mais detalhada que pode ser fornecida para o usuário.

signOut:

Código Significado
FIRAuthErrorCodeKeychainError Indica que ocorreu um erro de acesso do conjunto de chaves. Os campos NSLocalizedFailureReasonErrorKey e NSUnderlyingErrorKey do dicionário NSError.userInfo conterão mais informações sobre o erro encontrado.

FIRUser

Erros comuns das operações FIRUser

Código Significado
FIRAuthErrorCodeInvalidUserToken Indica que o token de atualização do usuário que fez login e que detém informações sobre a sessão é inválido. Solicite novo login neste dispositivo.
FIRAuthErrorCodeUserDisabled Indica que a conta do usuário está desativada e não pode mais ser usada até que seja reativada no painel Usuários do Firebase console.

reauthenticateWithCredential:completion:

Código Significado
FIRAuthErrorCodeInvalidCredential Indica que a credencial informada é inválida. Isso pode acontecer se a credencial estiver expirada ou incorreta.
FIRAuthErrorCodeInvalidEmail Se a credencial for do tipo EmailPasswordAuthCredential, indica que o endereço de e-mail está incorreto.
FIRAuthErrorCodeWrongPassword Se a credencial for do tipo EmailPasswordAuthCredential, indica que o usuário tentou autenticar novamente com uma senha incorreta.
FIRAuthErrorCodeUserMismatch Indica que houve uma tentativa de nova autenticação com um usuário que não é o usuário atual.
FIRAuthErrorCodeOperationNotAllowed Indica que as contas com o provedor de identidade representado pela credencial não estão ativadas. Ative-as na seção "Autenticação" do Console do Firebase.
FIRAuthErrorCodeEmailAlreadyInUse Indica que o e-mail informado pela credencial como, por exemplo, o de um token de acesso do Facebook, já está em uso por uma conta existente que não pode ser autenticada novamente com esse método de login. Chame fetchProvidersForEmail para o e-mail desse usuário e solicite que ele faça login com um dos provedores de login retornados. Esse erro é gerado somente se a configuração "Uma conta por endereço de e-mail" estiver ativada no Firebase console, nas configurações de Autenticação.
FIRAuthErrorCodeUserDisabled Indica que a conta do usuário está desativada.

updateEmail:completion:

Código Significado
FIRAuthErrorCodeEmailAlreadyInUse Indica que o e-mail já está em uso por outra conta.
FIRAuthErrorCodeInvalidEmail Indica que o endereço de e-mail informado está incorreto.
FIRAuthErrorCodeRequiresRecentLogin Atualizar o e-mail de um usuário é uma operação com risco de segurança que exige um login recente dele. Esse erro indica que não há login recente. Para resolver isso, autentique o usuário novamente invocando reauthenticateWithCredential:completion: em FIRUser.

updatePassword:completion:

Código Significado
FIRAuthErrorCodeOperationNotAllowed Indica que o administrador desativou o login com o provedor de identidade especificado.
FIRAuthErrorCodeRequiresRecentLogin Atualizar a senha de um usuário é uma operação com risco de segurança que exige um login recente dele. Esse erro indica que não há login recente. Para resolver isso, autentique o usuário novamente invocando reauthenticateWithCredential:completion: em FIRUser.
FIRAuthErrorCodeWeakPassword Indica uma tentativa de definição de uma senha considerada muito fraca. O campo NSLocalizedFailureReasonErrorKey no objeto de dicionário NSError.userInfo conterá uma explicação mais detalhada que pode ser fornecida para o usuário.

linkWithCredential:completion:

Código Significado
FIRAuthErrorCodeProviderAlreadyLinked Indica uma tentativa de vínculo de um tipo de provedor já vinculado a essa conta.
FIRAuthErrorCodeCredentialAlreadyInUse Indica uma tentativa de vínculo de uma credencial já vinculada a outra conta do Firebase.
FIRAuthErrorCodeOperationNotAllowed Indica que as contas com o provedor de identidade representado pela credencial não estão ativadas. Ative-as na seção "Autenticação" do Console do Firebase.

Esse método também pode retornar códigos de erro associados ao updateEmail:completion: e updatePassword:completion: no FIRUser.

unlinkFromProvider:completion:

Código Significado
FIRAuthErrorCodeNoSuchProvider Indica uma tentativa de desvincular um provedor que não está vinculado à conta.
FIRAuthErrorCodeRequiresRecentLogin Atualizar o e-mail é uma operação com risco de segurança que exige um login recente do usuário. Esse erro indica que não há login recente. Para resolver isso, autentique o usuário novamente invocando reauthenticateWithCredential:completion: em FIRUser.

sendEmailVerificationWithCompletion:

Código Significado
FIRAuthErrorCodeUserNotFound Indica que a conta de usuário não foi encontrada.

deleteWithCompletion:

Código Significado
FIRAuthErrorCodeRequiresRecentLogin Atualizar o e-mail é uma operação com risco de segurança que exige um login recente do usuário. Esse erro indica que não há login recente. Para resolver isso, autentique o usuário novamente invocando reauthenticateWithCredential:completion: em FIRUser.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.