Manejar errores de autenticación de plataformas Apple de Firebase

Si la devolución de llamada de finalización de los métodos de autenticación recibe un argumento NSError que no es nulo, se ha producido un error. Para enviar a la lógica de manejo de errores adecuada en su código de producción, verifique el código de error con los errores comunes y los errores específicos del método que se enumeran a continuación.

Algunos errores se pueden resolver mediante acciones particulares del usuario; por ejemplo, FIRAuthErrorCodeUserTokenExpired se puede resolver iniciando sesión nuevamente y FIRAuthErrorCodeWrongPassword pidiéndole que proporcione la contraseña correcta.

Excepto en el caso de FIRAuthErrorCodeNetworkError o FIRAuthErrorCodeTooManyRequests , volver a intentar una operación fallida con los mismos argumentos nunca tendrá éxito. No haga suposiciones sobre si la operación ha tenido efecto o no en el lado del servidor.

Al investigar o registrar errores, revise el diccionario userInfo . FIRAuthErrorNameKey contiene una cadena de nombre de error multiplataforma que se puede utilizar para identificar el error. NSLocalizedDescriptionKey contiene una descripción del error. Esta descripción está destinada al desarrollador, no al usuario. NSUnderlyingErrorKey contiene el error subyacente que causó el error en cuestión, si hay un error subyacente.

Además de los campos principales enumerados anteriormente, puede haber otros campos en el diccionario userInfo que pueden resultarle útiles al diagnosticar errores.

Códigos de error comunes a todos los métodos API

Código Significado
FIRAuthErrorCodeNetworkError Indica que se produjo un error de red durante la operación.
FIRAuthErrorCodeUserNotFound Indica que no se encontró la cuenta de usuario. Esto podría suceder si la cuenta de usuario ha sido eliminada.
FIRAuthErrorCodeUserTokenExpired Indica que el token del usuario actual ha caducado; por ejemplo, es posible que el usuario haya cambiado la contraseña de la cuenta en otro dispositivo. Debe pedirle al usuario que inicie sesión nuevamente en este dispositivo.
FIRAuthErrorCodeTooManyRequests Indica que la solicitud se bloqueó después de que se realizó una cantidad anormal de solicitudes desde el dispositivo que llama a los servidores de Firebase Authentication. Vuelva a intentarlo después de un tiempo.
FIRAuthErrorCodeInvalidAPIKey Indica que la aplicación se ha configurado con una clave API no válida.
FIRAuthErrorCodeAppNotAuthorized Indica que la aplicación no está autorizada a utilizar Firebase Authentication con la clave API proporcionada. vaya a la Consola API de Google y verifique en la pestaña de credenciales que la clave API que está utilizando tenga el ID del paquete de su aplicación en la lista blanca.
FIRAuthErrorCodeKeychainError Indica que ocurrió un error al acceder al llavero. Los campos NSLocalizedFailureReasonErrorKey y NSUnderlyingErrorKey en el diccionario NSError.userInfo contendrán más información sobre el error encontrado.
FIRAuthErrorCodeInternalError Indica que ocurrió un error interno. Informe el error con todo el objeto NSError .

Códigos de error específicos del método

FIRAuth

fetchProvidersForEmail:finalización:

Código Significado
FIRAuthErrorCodeInvalidEmail Indica que la dirección de correo electrónico tiene un formato incorrecto.

iniciar sesión con correo electrónico: contraseña: finalización:

Código Significado
FIRAuthErrorCodeOperationNotAllowed Indica que las cuentas de correo electrónico y contraseña no están habilitadas. Habilítelos en la sección Auth de Firebase console .
FIRAuthErrorCodeInvalidEmail Indica que la dirección de correo electrónico tiene un formato incorrecto.
FIRAuthErrorCodeUserDisabled Indica que la cuenta del usuario está deshabilitada.
FIRAuthErrorCodeWrongPassword Indica que el usuario intentó iniciar sesión con una contraseña incorrecta.

iniciar sesión con credencial: finalización:

Código Significado
FIRAuthErrorCodeInvalidCredential Indica que la credencial proporcionada no es válida. Esto podría suceder si ha caducado o tiene un formato incorrecto.
FIRAuthErrorCodeInvalidEmail Indica que la dirección de correo electrónico tiene un formato incorrecto, si la credencial es del tipo EmailPasswordAuthCredential .
FIRAuthErrorCodeOperationNotAllowed Indica que las cuentas con el proveedor de identidad representado por la credencial no están habilitadas. Habilítelos en la sección Auth de Firebase console .
FIRAuthErrorCodeEmailAlreadyInUse Indica que el correo electrónico afirmado por la credencial (por ejemplo, el correo electrónico en un token de acceso de Facebook) ya está en uso por una cuenta existente, que no se puede autenticar con este método de inicio de sesión. Llame a fetchProvidersForEmail para obtener el correo electrónico de este usuario y luego solicítele que inicie sesión con cualquiera de los proveedores de inicio de sesión devueltos. Este error solo se producirá si la configuración "Una cuenta por dirección de correo electrónico" está habilitada en Firebase console , en Configuración de autenticación.
FIRAuthErrorCodeUserDisabled Indica que la cuenta del usuario está deshabilitada.
FIRAuthErrorCodeWrongPassword Indica que el usuario intentó iniciar sesión con una contraseña incorrecta, si la credencial es del tipo EmailPasswordAuthCredential .

iniciar sesión de forma anónima con finalización:

Código Significado
FIRAuthErrorCodeOperationNotAllowed Indica que las cuentas anónimas no están habilitadas. Habilítelos en la sección Auth de Firebase console .

signInWithCustomToken:finalización:

Código Significado
FIRAuthErrorCodeInvalidCustomToken Indica un error de validación con el token personalizado.
FIRAuthErrorCodeCustomTokenMismatch Indica que la cuenta de servicio y la clave API pertenecen a proyectos diferentes.

crearUsuarioConEmail:contraseña:finalización:

Código Significado
FIRAuthErrorCodeInvalidEmail Indica que la dirección de correo electrónico tiene un formato incorrecto.
FIRAuthErrorCodeEmailAlreadyInUse Indica que el correo electrónico utilizado para intentar registrarse ya existe. Llame a fetchProvidersForEmail para comprobar qué mecanismos de inicio de sesión utilizó dicho usuario y solicite al usuario que inicie sesión con uno de ellos.
FIRAuthErrorCodeOperationNotAllowed Indica que las cuentas de correo electrónico y contraseña no están habilitadas. Habilítelos en la sección Autenticación de Firebase console .
FIRAuthErrorCodeWeakPassword Indica un intento de establecer una contraseña que se considera demasiado débil. El campo NSLocalizedFailureReasonErrorKey en el objeto de diccionario NSError.userInfo contendrá una explicación más detallada que se puede mostrar al usuario.

desconectar:

Código Significado
FIRAuthErrorCodeKeychainError Indicó que ocurrió un error al acceder al llavero. Los campos NSLocalizedFailureReasonErrorKey y NSUnderlyingErrorKey en el diccionario NSError.userInfo contendrán más información sobre el error encontrado.

FIRUser

Errores comunes para las operaciones de FIRUser

Código Significado
FIRAuthErrorCodeInvalidUserToken Indica que el token de actualización del usuario que inició sesión, que contiene información de la sesión, no es válido. Debe pedirle al usuario que inicie sesión nuevamente en este dispositivo.
FIRAuthErrorCodeUserDisabled Indica que la cuenta del usuario está deshabilitada y ya no se puede usar hasta que se habilite nuevamente desde el panel Usuarios en Firebase console.

reauthenticateWithCredential: finalización:

Código Significado
FIRAuthErrorCodeInvalidCredential Indica que la credencial proporcionada no es válida. Esto podría suceder si ha caducado o tiene un formato incorrecto.
FIRAuthErrorCodeInvalidEmail Indica que la dirección de correo electrónico tiene un formato incorrecto, si la credencial es del tipo EmailPasswordAuthCredential .
FIRAuthErrorCodeWrongPassword Indica que el usuario intentó volver a autenticarse con una contraseña incorrecta, si la credencial es del tipo EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Indica que se intentó volver a autenticarse con un usuario que no es el usuario actual.
FIRAuthErrorCodeOperationNotAllowed Indica que las cuentas con el proveedor de identidad representado por la credencial no están habilitadas. Habilítelos en la sección Auth de Firebase console .
FIRAuthErrorCodeEmailAlreadyInUse Indica que el correo electrónico afirmado por la credencial (por ejemplo, el correo electrónico en un token de acceso de Facebook) ya está en uso en una cuenta existente, que no se puede volver a autenticar con este método de inicio de sesión. Llame a fetchProvidersForEmail para obtener el correo electrónico de este usuario y luego solicítele que inicie sesión con cualquiera de los proveedores de inicio de sesión devueltos. Este error solo se producirá si la configuración "Una cuenta por dirección de correo electrónico" está habilitada en Firebase console , en Configuración de autenticación.
FIRAuthErrorCodeUserDisabled Indica que la cuenta del usuario está deshabilitada.

actualizarCorreo electrónico: finalización:

Código Significado
FIRAuthErrorCodeEmailAlreadyInUse Indica que el correo electrónico ya está en uso en otra cuenta.
FIRAuthErrorCodeInvalidEmail Indica que la dirección de correo electrónico tiene un formato incorrecto.
FIRAuthErrorCodeRequiresRecentLogin Actualizar el correo electrónico de un usuario es una operación sensible a la seguridad que requiere un inicio de sesión reciente por parte del usuario. Este error indica que el usuario no ha iniciado sesión lo suficientemente recientemente. Para resolverlo, vuelva a autenticar al usuario invocando reauthenticateWithCredential:completion: en FIRUser .

actualizarContraseña:finalización:

Código Significado
FIRAuthErrorCodeOperationNotAllowed Indica que el administrador deshabilitó el inicio de sesión con el proveedor de identidad especificado.
FIRAuthErrorCodeRequiresRecentLogin Actualizar la contraseña de un usuario es una operación sensible a la seguridad que requiere un inicio de sesión reciente por parte del usuario. Este error indica que el usuario no ha iniciado sesión lo suficientemente recientemente. Para resolverlo, vuelva a autenticar al usuario invocando reauthenticateWithCredential:completion: en FIRUser .
FIRAuthErrorCodeWeakPassword Indica un intento de establecer una contraseña que se considera demasiado débil. El campo NSLocalizedFailureReasonErrorKey en el objeto de diccionario NSError.userInfo contendrá una explicación más detallada que se puede mostrar al usuario.

linkWithCredential:finalización:

Código Significado
FIRAuthErrorCodeProviderAlreadyLinked Indica un intento de vincular un proveedor de un tipo ya vinculado a esta cuenta.
FIRAuthErrorCodeCredentialAlreadyInUse Indica un intento de vincular con una credencial que ya se vinculó con una cuenta de Firebase diferente.
FIRAuthErrorCodeOperationNotAllowed Indica que las cuentas con el proveedor de identidad representado por la credencial no están habilitadas. Habilítelos en la sección Auth de Firebase console .

Este método también puede devolver códigos de error asociados con updateEmail:completion: y updatePassword:completion: en FIRUser .

unlinkFromProvider: finalización:

Código Significado
FIRAuthErrorCodeNoSuchProvider Indica un intento de desvincular un proveedor que no está vinculado a la cuenta.
FIRAuthErrorCodeRequiresRecentLogin La actualización del correo electrónico es una operación sensible a la seguridad que requiere un inicio de sesión reciente por parte del usuario. Este error indica que el usuario no ha iniciado sesión lo suficientemente recientemente. Para resolverlo, vuelva a autenticar al usuario invocando reauthenticateWithCredential:completion: en FIRUser .

enviarEmailVerificationWithCompletion:

Código Significado
FIRAuthErrorCodeUserNotFound Indica que no se encontró la cuenta de usuario.

eliminar con finalización:

Código Significado
FIRAuthErrorCodeRequiresRecentLogin Eliminar una cuenta de usuario es una operación sensible a la seguridad que requiere un inicio de sesión reciente por parte del usuario. Este error indica que el usuario no ha iniciado sesión lo suficientemente recientemente. Para resolverlo, vuelva a autenticar al usuario invocando reauthenticateWithCredential:completion: en FIRUser .