如何将twitter v2Kotlin库添加到我的maven java代码中?

bnlyeluc  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(363)

我正在使用twitter 4j访问twitter API的v1。正如你们中的一些人所知道的,v1将在2023年4月29日被删除/弃用。
对于v2 twitter API,我发现我需要将v2 twitter 4j Package 器添加到我的项目中以使用v2 API。https://github.com/takke/twitter4j-v2
我以为这只是简单地增加了我的pom的depecency,但不是这样。这是用Kotlin写的。我添加了依赖项,它编译得很好,我可以看到库的.class文件,但当我试图导入时,找不到它。
当我进行clean install时,我确实看到了以下消息:
[WARNING]未找到跳过Kotlin编译的源代码
我用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。

yxyvkwin

yxyvkwin1#

我遇到了同样的问题,然后切换到新的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);
}

由于Springbean是一个单例,因此在构造函数中构建它就足够了(只发生一次)

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的便利,有一个更简单的方法使用OAuth 1-因为承载令牌不能用于所有端点,加上OAuth2有点令人沮丧。特别是因为Twitter V2文档和实际情况一样糟糕。如此糟糕的解释和如此奇怪的实施imho。因此,如果你只想自动发推,你可以使用这个类来生成你的身份验证:
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();
}

相关问题