跳转到主要内容

介绍

软件开发工具包(SDK)是一组为特定平台或 API 定制的软件工具和程序。SDK 旨在通过提供库或代码基,使开发者能够在其应用中以更高效率、用更少代码来构建或扩展功能,从而显著加快开发进度,节省时间、成本和精力。
X Developer Platform 现已面向使用 TypeScript/JavaScript 和 Java 的开发者提供 2 款官方 SDK。它们通过为所有可用的 v2 endpoint 提供预构建函数并简化认证流程,免去围绕 X API v2 的复杂手动编程,从而帮助开发者更高效地构建。由于这些 SDK 由 Developer Platform 团队构建并维护,它们将始终与 X API v2 的未来版本保持同步更新。
由于这些 SDK 封装了 X API,您必须拥有一个开发者账户,并使用位于某个 Project开发者 App的凭据对请求进行认证。

安装

  • Java
  • TypeScript
安装该 Java 包有多种方式(需要 Java 1.8+):
  • Maven 用户:将以下依赖添加到项目的 POM 文件中:
<dependency>
  <groupId>com.twitter</groupId>
  <artifactId>twitter-api-java-sdk</artifactId>
  <version>1.1.4</version>
</dependency>
  • Gradle 用户:将以下依赖添加到项目的构建文件中: implementation "com.twitter:twitter-api-java-sdk:1.1.4"
  • 其他方式:先运行以下命令生成 JAR: mvn clean package 然后手动安装以下 JAR:
target/twitter-api-java-sdk-1.1.4.jartarget/lib/*.jar

客户端基础

在工作文件的开头导入类(Java)和包(TypeScript),以便使用身份验证与库客户端。若要调用库客户端的方法,必须提供身份验证凭据:可以是 OAuth 2.0 Bearer Token(仅限 App),或在使用 OAuth 2.0 用户上下文进行认证时提供 client id/client secret。 以下示例展示了具体用法:
  • Java
  • TypeScript
// Import classes:
import com.twitter.clientlib.ApiClient;
import com.twitter.clientlib.ApiException;
import com.twitter.clientlib.Configuration;
import com.twitter.clientlib.auth.*;
import com.twitter.clientlib.model.*;
import com.twitter.clientlib.TwitterCredentialsBearer;
import com.twitter.clientlib.api.TwitterApi;

// Instantiate library client
TwitterApi apiInstance = new TwitterApi();

// Instantiate auth credentials (App-only example)
TwitterCredentialsBearer credentials = new TwitterCredentialsBearer(System.getenv("APP-ONLY-ACCESS-TOKEN"));

// Pass credentials to library client
apiInstance.setTwitterCredentials(credentials);

身份验证流程

如果你仅使用 application only 选项为 SDK 进行身份验证,只需提供令牌,库客户端即可立即调用各个 endpoint 的方法。请注意,application only 令牌不能用于需要 user context 身份验证的 endpoints。 OAuth 2.0 user context 身份验证在创建 auth 客户端后还需执行一些额外步骤:
  • 生成授权 URL
  • 通过授权 URL 授权应用
  • 重定向至回调(应与开发者门户中 auth 设置页面配置的回调 URL 完全匹配)
  • 解析 code verifier 并交换获取 access token
SDK 在 auth 客户端上提供了可简化上述步骤的方法。若需查看使用 OAuth 2.0 user context 进行请求身份验证的完整示例,请参阅 GitHub 仓库。

endpoint 方法

库客户端提供的方法均以清晰的名称对应每个 endpoint,所有参数均通过函数参数传入。 下面是按 ID 查找 Post 的示例:
  • Java
  • TypeScript
String id = "1511757922354663425"; // String | 单个 Tweet 的 ID。
Set<String> expansions = new HashSet<>(Arrays.asList("author_id")); // Set<String> | 以逗号分隔的扩展 fields 列表。
Set<String> tweetFields = new HashSet<>(Arrays.asList("created_at", "lang", "context_annotations")); // Set<String> | 以逗号分隔的 Tweet fields 列表(用于返回)。
Set<String> userFields = new HashSet<>(Arrays.asList("created_at", "description", "name")); // Set<String> | 以逗号分隔的 User fields 列表(用于返回)。

try {
 SingleTweetLookupResponse result = apiInstance.tweets().findTweetById(id, expansions, tweetFields, userFields, null, null, null);
 System.out.println(result);
} catch (ApiException e) {
 System.err.println("Exception when calling TweetsApi#findTweetById");
 System.err.println("Status code: " + e.getCode());
 System.err.println("Reason: " + e.getResponseBody());
 System.err.println("Response headers: " + e.getResponseHeaders());
 e.printStackTrace();
}

I