gpt4 book ai didi

java - 如何使用 twitter API 1.1 和 java 搜索推文

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:07 25 4
gpt4 key购买 nike

Twitter API 已从 1.0 更改为 1.1。现在对于任何类型的查询都必须经过授权。我正在使用 java 获取推文。谁能给我一些使用 OAuth 身份验证获取推文的 Java 示例。

更新

使用 twitter4j api 是可能的。 http://twitter4j.org/en/ .下面给出一个例子

Twitter twitter = new TwitterFactory().getInstance();

AccessToken accessToken = new AccessToken("Your-Access-Token", "Your-Access-Token-Secret");
twitter.setOAuthConsumer("Consumer-Key", "Consumer-Key-Secret");
twitter.setOAuthAccessToken(accessToken);

try {
Query query = new Query("#IPL");
QueryResult result;
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText());
}
}
catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
System.exit(-1);
}

这里有问题

当我作为 Java 类运行时,此示例独立运行。但是当我在 JSP 中添加此代码以在 webapp 中进行测试时,它不起作用。它向我显示以下异常

    SEVERE: Servlet.service() for servlet [jsp] in context with path [/mypub] threw exception [java.lang.IllegalStateException: consumer key/secret pair already set.] with root cause
java.lang.IllegalStateException: consumer key/secret pair already set.
at twitter4j.TwitterBaseImpl.setOAuthConsumer(TwitterBaseImpl.java:264)
at com.me.framework.tag.core.TweetFetch.doTag(TweetFetch.java:50)
at org.apache.jsp.template.test_jsp._jspx_meth_wf_002dcore_005ftweetFetch_005f0(test_jsp.java:100)
at org.apache.jsp.template.test_jsp._jspService(test_jsp.java:74)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

最佳答案

问题是您多次设置消费者密码和 token ,如异常所示:

java.lang.IllegalStateException: consumer key/secret pair already set.

它的发生是因为 TwitterFactory.getInstance()正在返回 Twitter 的单例,然后在每次向您的 Servlet 发出请求时调用 setOAuthConsumersetOAuthAccessToken

您需要确保只配置您的 Twitter 实例一次,而不是每次发出请求时。

实现此目的的一种方法是要求 TwitterFactory 使用 TwitterFactory.getInstance(AccessToken) 为您提供经过身份验证的 Twitter 实例:

final AccessToken accessToken = new AccessToken("Your-Access-Token", "Your-Access-Token-Secret");
final Twitter twitter = TwitterFactory.getInstance(token);
...

这个工厂方法的另一个好处是它可以为您返回一个缓存的、经过身份验证的 Twitter 实例。

关于java - 如何使用 twitter API 1.1 和 java 搜索推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17085133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com