FastComments.com

FastComments Java SDK


这是 FastComments 的官方 Java SDK。

FastComments API 的官方 Java SDK

仓库

在 GitHub 上查看


安装 Internal Link

Maven

将 Repsy 仓库添加到项目的 POM 中:

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

然后添加所需的依赖项:

<dependencies>
    <!-- API 客户端 -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>client</artifactId>
        <version>2.0.0</version>
    </dependency>
    
    <!-- 核心库(包含 SSO) -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>core</artifactId>
        <version>2.0.0</version>
    </dependency>
    
    <!-- PubSub 库(用于实时事件) -->
    <dependency>
        <groupId>com.fastcomments</groupId>
        <artifactId>pubsub</artifactId>
        <version>2.0.0</version>
    </dependency>
</dependencies>

Gradle

将 Repsy 仓库添加到你的 build.gradle 文件:

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

dependencies {
    // API 客户端
    implementation "com.fastcomments:client:2.0.0"
    
    // 核心库(包含 SSO)
    implementation "com.fastcomments:core:2.0.0"
    
    // PubSub 库(用于实时事件)
    implementation "com.fastcomments:pubsub:2.0.0"
}

Library Contents

此库包含三个模块。生成的 API 客户端、包含手写工具以简化与 API 交互的核心 Java 库,以及用于订阅变更流的 pubsub 模块库。

Public vs Secured APIs

对于 API 客户端,有三个类:DefaultApiPublicApiModerationApiDefaultApi 包含需要你的 API 密钥 的方法,PublicApi 包含可以直接从浏览器/移动设备/等无认证情况下调用的方法。

ModerationApi 为版主控制面板提供支持。它包含评论审核的方法(列出、计数、搜索、日志和导出)、审核操作(删除/恢复、标记、设置审核/垃圾/通过 状态、投票,以及重新打开/关闭主题)、封禁(从评论中封禁、撤销封禁、封禁前摘要、封禁状态和偏好,以及被封用户计数)以及徽章与信任(授予/移除徽章、手动徽章、获取/设置信任因子和用户内部资料)。每个 ModerationApi 方法都接受一个 sso 参数,以便代表已通过 SSO 验证的版主执行调用。

快速开始 Internal Link

使用已认证的 API (DefaultApi)

Important: 在发起需要认证的请求之前,您必须在 ApiClient 上设置您的 API key。如果不设置,请求将返回 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) {
        // 创建并配置 API 客户端
        ApiClient apiClient = new ApiClient();

        // 必需:设置您的 API key(从 FastComments 仪表板获取)
        apiClient.setApiKey("YOUR_API_KEY_HERE");

        // 使用已配置的客户端创建 API 实例
        DefaultApi api = new DefaultApi(apiClient);

        // 现在可以发起已认证的 API 调用
        try {
            // 示例:添加 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());
            // 常见错误:
            // - 401:API key 缺失或无效
            // - 400:请求验证失败
        }
    }
}

使用公共 API (PublicApi)

公共端点不需要认证:

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();
}

使用审核 API (ModerationApi)

The ModerationApi drives the moderator dashboard. Each method accepts an sso parameter identifying the SSO-authenticated moderator on whose behalf the request is made:

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

ModerationApi moderationApi = new ModerationApi();

try {
    // 列出等待审核的评论
    ModerationAPIGetCommentsResponse response = moderationApi.getApiComments()
        .sso("YOUR_SSO_TOKEN")
        .execute();
    System.out.println(response);
} catch (ApiException e) {
    e.printStackTrace();
}

常见问题

  1. 401 "missing-api-key" 错误:确保在创建 DefaultApi 实例之前调用 apiClient.setApiKey("YOUR_KEY")
  2. Wrong API class:对于服务端需要认证的请求使用 DefaultApi,对于客户端/公共请求使用 PublicApi
  3. Null API key:SDK 将在 API key 为 null 时默默跳过认证,导致 401 错误。

说明 Internal Link

广播 ID

你会看到在某些 API 调用中需要传入 broadcastId。当你接收到事件时,会收到这个 ID 返回,所以如果你打算在客户端乐观地应用更改,就可以据此忽略该事件(你可能会想这么做,因为它提供了最佳体验)。传入 UUID。该 ID 应足够唯一,以免在同一浏览器会话中出现两次。

需要帮助?

如果您在使用 Java SDK 时遇到任何问题或有任何疑问,请:

贡献

欢迎贡献!请访问 GitHub 仓库 获取贡献指南。