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 permites que Cloud Storage Security Rules tomes medidas al respecto, pero aun así no logras solucionarlo, 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 especificada.
ERROR_BUCKET_NOT_FOUND No hay buckets configurados para Cloud Storage
ERROR_PROJECT_NOT_FOUND No hay proyectos configurados para Cloud Storage
ERROR_QUOTA_EXCEEDED Se superó la cuota del bucket de Cloud Storage. Si tienes el plan de precios Spark, considera actualizar al plan de precios Blaze de pago por uso. Si ya tienes el plan de precios Blaze, comunícate con el equipo de Asistencia de Firebase.

Importante: A partir del 1 de octubre de 2025, el plan de precios Blaze será obligatorio para usar Cloud Storage, incluso los buckets predeterminados.
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 solicitada. 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>.