java - 如何将 twitter v2 Kotlin 库添加到我的 Maven Java 代码中?

标签 java kotlin twitter4j

我正在使用 twitter4j 来访问 twitter API v1。正如你们中有些人所知,v1 将于 2023 年 4 月 29 日被删除/弃用。

对于 v2 twitter API,我发现我需要将 v2 twitter4j 包装器添加到我的项目中才能使用 v2 API。 https://github.com/takke/twitter4j-v2

我以为这只是简单地将 dedecency 添加到我的 pom 中,但事实并非如此。它是用 Kotlin 编写的。我添加了依赖项,它编译得很好,我可以看到 lib 的 .class 文件,但是当我尝试导入时,找不到它。

当我进行全新安装时,我确实看到了这条消息:

[WARNING] No sources found skipping Kotlin compile

我正在使用intellij。有我需要更改的设置吗?

这是我的 pom 的片段:

        <groupId>org.twitter4j</groupId>
        <artifactId>twitter4j-core</artifactId>
        <version>4.0.7</version>
    </dependency>
    <dependency>
        <groupId>io.github.takke</groupId>
        <artifactId>jp.takke.twitter4j-v2</artifactId>
        <version>1.4.1</version>
    </dependency>

这可能是我犯的菜鸟错误,因为我以前从未使用过 Kotlin。

最佳答案

我遇到了同样的问题,然后切换到新的 Twitter API。

<dependency>
        <groupId>com.twitter</groupId>
        <artifactId>twitter-api-java-sdk</artifactId>
        <version>2.0.3</version>
    </dependency>

这是一个例子

public TwitterService(@Value(value = "${is.local.dev}") final boolean localDevelopment,
                      @Value(value = "${twitter.bearerToken}") final String bearerToken) {
    this.localDevelopment = localDevelopment;
    TwitterCredentialsBearer credentials = new TwitterCredentialsBearer(bearerToken);
    this.twitterApi = new TwitterApi(credentials);
}

由于 Spring bean 是一个单例,因此在构造函数内构建它应该足够了(发生一次)

try {
            TweetsApi.APIcreateTweetRequest tweet = getTwitterApi().tweets().createTweet(new TweetCreateRequest().text(what));
            ApiResponse<TweetCreateResponse> response = tweet.executeWithHttpInfo();
            if (response.getStatusCode() != 200) {
                log.error("Could not tweet. Error code: {}, reason: {}", response.getStatusCode(), response.getData());
            }
            log.debug("Tweet created");
        } catch (ApiException e) {
            log.error("Failed to create a tweet", e);
        }

编辑:

如果您只想发布推文并且不需要 Twitter SDK 的便利,那么使用 OAuth1 有一种更简单的方法 - 因为承载 token 不能用于所有端点,而且 OAuth2 有点令人沮丧。特别是因为 Twitter V2 文档实际上很糟糕。恕我直言,解释得很糟糕,实现起来也很奇怪。因此,如果您只想自动发推文,您可以使用此类来生成身份验证:

Auth Generator

然后像这样使用它:

    public void tweet(String what) {

    TwitterOAuthGenerator authGenerator = new TwitterOAuthGenerator(apiKey, apiKeySecret, accessToken, accessTokenSecret);
    String header = authGenerator.generateHeader("POST", TWEET_URL, Collections.emptyMap());

    HttpResponse<String> response = Unirest.post(TWEET_URL)
            .header("Authorization", header)
            .header("Content-Type", "application/json")
            .body("{\"text\":\"" + what + "\"}")
            .asString();
}

关于java - 如何将 twitter v2 Kotlin 库添加到我的 Maven Java 代码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76065882/

相关文章:

kotlin - Kotlin 中 lambda 和 KFunction 的区别

android - 底部导航 setOnItemSelectedListener 返回 super

java - 在哪里可以从 Twitter 搜索返回的 HttpClient 获取 http 响应代码?

java - 使用 Twitter4j 获取推文

java - 如何使用 twitter4j 将好友 ID 转换为 Twitter 中相应的名称?

java - 在一条语句中使用 getGenerateKeys() 从 java 向 Oracle 数据库中插入多行

java - 从头开始的链表。页眉和页脚有问题

java - 构建一个仅打印基于文件的数组的特定部分的方法

java - jboss_init_redhat 不工作

java - 如何检查 fragment 中的权限