Soluciona errores de Cloud Storage en Android

A veces, las cosas no salen como las planeamos y ocurre un error.

Cuando tengas dudas, revisa el error que se generó y lee lo que dice el mensaje de error. El siguiente código muestra la implementación de un controlador de errores personalizado que inspecciona el código y el mensaje de error que muestra Cloud Storage. Puedes agregar controladores de errores como este a diversos objetos que se usan en la API de Cloud Storage (por ejemplo, UploadTask y FileDownloadTask).

Kotlin+KTX

internal inner class MyFailureListener : OnFailureListener {
    override fun onFailure(exception: Exception) {
        val errorCode = (exception as StorageException).errorCode
        val errorMessage = exception.message
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Java

class MyFailureListener implements OnFailureListener {
    @Override
    public void onFailure(@NonNull Exception exception) {
        int errorCode = ((StorageException) exception).getErrorCode();
        String errorMessage = exception.getMessage();
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Si comprobaste el mensaje de error y las reglas de seguridad de Cloud Storage permiten que tomes medidas al respecto, pero no logras solucionarlo de todos modos, visita la página de asistencia para pedir ayuda.

Soluciona mensajes de error

Existen varios motivos por los que pueden ocurrir errores, por ejemplo, que el archivo no exista, que el usuario no tenga permiso para acceder al archivo deseado o que se haya cancelado la carga del archivo.

A fin de diagnosticar el problema y administrar el error de manera adecuada, te brindamos una lista de todos los errores que puede presentar el cliente y la manera en que pueden ocurrir. Los códigos de error de esta tabla se definen en la clase StorageException como constantes de número entero.

Código Motivo
ERROR_UNKNOWN Ocurrió un error desconocido.
ERROR_OBJECT_NOT_FOUND No existe ningún objeto en la referencia deseada.
ERROR_BUCKET_NOT_FOUND No se configuró ningún bucket para Cloud Storage.
ERROR_PROJECT_NOT_FOUND No se configuró ningún proyecto para Cloud Storage.
ERROR_QUOTA_EXCEEDED Se superó la cuota del bucket de Cloud Storage. Si estás en el nivel sin costo, deberás actualizar a un plan pagado. Si estás en un plan pagado, comunícate con el personal de asistencia de Firebase.
ERROR_NOT_AUTHENTICATED El usuario no se autenticó. Vuelve a intentarlo después de realizar la autenticación.
ERROR_NOT_AUTHORIZED El usuario no está autorizado para realizar la acción deseada. Consulta las reglas para asegurarte de que sean correctas.
ERROR_RETRY_LIMIT_EXCEEDED Se superó el límite de tiempo máximo permitido para una operación (de carga, descarga, eliminación, etc.). Vuelve a intentarlo.
ERROR_INVALID_CHECKSUM El archivo del cliente no coincide con la suma de verificación del archivo que recibió el servidor. Vuelve a subirlo.
ERROR_CANCELED El usuario canceló la operación.

Además, si intentas llamar a getReferenceFromUrl() con una URL no válida, se generará una IllegalArgumentException. El argumento del método anterior debe tener el formato gs://bucket/object o https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>.