FastComments.com

FastComments SDK de Java

Esto es el SDK oficial de Java para FastComments.

SDK oficial de Java para la API de FastComments

Repositorio

Ver en GitHub

Agentes de codificación IA Internal Link

skills.sh

Proporcione a su agente de codificación el contexto de FastComments que necesita - widgets, configuración, SSO seguro, la API REST y los SDK:

npx skills add fastcomments/skills

Funciona con Claude Code, Codex, Cursor, Copilot, Gemini y cualquier otro agente que soporte la skills CLI.

Instalación Internal Link

Maven

Agrega el repositorio Repsy al POM de tu proyecto:

<repositories>
    <repository>
        <id>repsy</id>
        <name>FastComments Maven Repository on Repsy</name>
        <url>https://repo.repsy.io/mvn/winrid/fastcomments</url>
    </repository>
</repositories>

Luego agrega las dependencias que necesites:

<dependencies>
    <!-- Cliente API -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>client</artifactId>
        <version>3.1.1</version>
    </dependency>
    
    <!-- Biblioteca Core (incluye SSO) -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>core</artifactId>
        <version>3.1.1</version>
    </dependency>
    
    <!-- Biblioteca PubSub (para eventos en vivo) -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>pubsub</artifactId>
        <version>3.1.1</version>
    </dependency>
</dependencies>

Gradle

Agrega el repositorio Repsy a tu archivo build.gradle:

repositories {
    mavenCentral()
    maven {
        url "https://repo.repsy.io/mvn/winrid/fastcomments"
    }
}

dependencies {
    // Cliente API
    implementation "com.fastcomments:client:3.1.1"
    
    // Biblioteca Core (incluye SSO)
    implementation "com.fastcomments:core:3.1.1"
    
    // Biblioteca PubSub (para eventos en vivo)
    implementation "com.fastcomments:pubsub:3.1.1"
}

Contenido de la Biblioteca

Esta biblioteca contiene tres módulos: el cliente API generado, la biblioteca Java core que incluye utilidades escritas a mano para facilitar el trabajo con la API, y el módulo pubsub, que es una biblioteca para suscribirse a flujos de cambios.

APIs Públicas vs Seguras

Para el cliente API, existen tres clases: DefaultApi, PublicApi y ModerationApi. La DefaultApi contiene métodos que requieren tu clave API, y la PublicApi contiene métodos que pueden invocarse directamente desde un navegador/dispositivo móvil/etc. sin autenticación.

La ModerationApi ofrece una amplia gama de APIs de moderación en tiempo real y rápidas. Cada método de ModerationApi acepta un parámetro sso y puede autenticarse mediante SSO o una cookie de sesión de FastComments.com.

Inicio rápido Internal Link

Uso de APIs autenticadas (DefaultApi)

Importante: Debes establecer tu clave API en el ApiClient antes de realizar solicitudes autenticadas. Si no lo haces, las solicitudes fallarán con un error 401.

import com.fastcomments.invoker.ApiClient;
import com.fastcomments.invoker.ApiException;
import com.fastcomments.api.DefaultApi;
import com.fastcomments.model.*;

public class Example {
    public static void main(String[] args) {
        // Crear y configurar el cliente de API
        ApiClient apiClient = new ApiClient();

        // OBLIGATORIO: Establece tu clave API (consíguela desde el panel de FastComments)
        apiClient.setApiKey("YOUR_API_KEY_HERE");

        // Crea la instancia de la API con el cliente configurado
        DefaultApi api = new DefaultApi(apiClient);

        // Ahora puedes hacer llamadas a la API autenticadas
        try {
            // Ejemplo: Agregar un usuario SSO
            CreateAPISSOUserData userData = new CreateAPISSOUserData();
            userData.setId("user-123");
            userData.setEmail("user@example.com");
            userData.setDisplayName("John Doe");

            AddSSOUserAPIResponse response = api.addSSOUser("YOUR_TENANT_ID", userData)
                .execute();
            System.out.println("User created: " + response);

        } catch (ApiException e) {
            System.err.println("Error: " + e.getResponseBody());
            // Errores comunes:
            // - 401: La clave API falta o no es válida
            // - 400: La validación de la solicitud falló
        }
    }
}

Uso de APIs públicas (PublicApi)

Los endpoints públicos no requieren autenticación:

import com.fastcomments.api.PublicApi;
import com.fastcomments.invoker.ApiException;

PublicApi publicApi = new PublicApi();

try {
    var response = publicApi.getCommentsPublic("YOUR_TENANT_ID", "page-url-id")
        .execute();
    System.out.println(response);
} catch (ApiException e) {
    e.printStackTrace();
}

Uso de las APIs de moderación (ModerationApi)

La ModerationApi alimenta el panel de moderación. Cada método acepta un parámetro sso que identifica al moderador autenticado por SSO en cuyo nombre se realiza la solicitud:

import com.fastcomments.api.ModerationApi;
import com.fastcomments.invoker.ApiException;
import com.fastcomments.model.*;

ModerationApi moderationApi = new ModerationApi();

try {
    // Listar comentarios en espera de moderación
    ModerationAPIGetCommentsResponse response = moderationApi.getApiComments()
        .sso("YOUR_SSO_TOKEN")
        .execute();
    System.out.println(response);
} catch (ApiException e) {
    e.printStackTrace();
}

Problemas comunes

  1. 401 "missing-api-key" error: Asegúrate de llamar a apiClient.setApiKey("YOUR_KEY") antes de crear la instancia de DefaultApi.
  2. Clase API equivocada: Usa DefaultApi para solicitudes autenticadas en el servidor, PublicApi para solicitudes del lado del cliente/públicas.
  3. Clave API nula: El SDK omitirá silenciosamente la autenticación si la clave API es nula, lo que provocará errores 401.

Notas Internal Link

IDs de Broadcast

Verás que se supone que debes pasar un broadcastId en algunas llamadas a la API. Cuando recibas eventos, obtendrás este ID de vuelta, así sabrás ignorar el evento si planeas aplicar cambios de forma optimista en el cliente (lo cual probablemente querrás hacer ya que ofrece la mejor experiencia). Pasa un UUID aquí. El ID debe ser lo suficientemente único como para no ocurrir dos veces en una sesión del navegador.

¿Necesita ayuda?

Si encuentra algún problema o tiene preguntas sobre el SDK de Java, por favor:

Contribuciones

¡Las contribuciones son bienvenidas! Por favor visite el repositorio de GitHub para las pautas de contribución.