我在Java中使用Twitter API有以下代码
import java.io.File;
import java.io.PrintWriter;
import java.util.List;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;
public class TwitterDataCollector {
public static void main(String[] args) throws Exception {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey(comsumerKey)
.setOAuthConsumerSecret(consumerSecret)
.setOAuthAccessToken(accesstoken)
.setOAuthAccessTokenSecret(accesstokensecret);
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
//PrintWriter tweetWriter = null;
twitter = TwitterFactory.getSingleton();
List<Status> statuses = twitter.getHomeTimeline();
System.out.println("Showing home timeline.");
for (Status status : statuses) {
System.out.println(status.getUser().getName() + ":" + status.getText());
}
}
}
我正在尝试使用消费者密钥和访问令牌对Twitter API进行身份验证,并尝试访问我的时间轴,但它正在显示
Exception in thread "main"
java.lang.IllegalStateException: Authentication credentials are missing. See http://twitter4j.org/en/configuration.html for details
at twitter4j.TwitterBaseImpl.ensureAuthorizationEnabled(TwitterBaseImpl.java:186)
at twitter4j.TwitterImpl.get(TwitterImpl.java:1554)
at twitter4j.TwitterImpl.getHomeTimeline(TwitterImpl.java:105)
at TwitterDataCollector.main(TwitterDataCollector.java:24)
答案 0 :(得分:2)
删除行
twitter = TwitterFactory.getSingleton();
解决您的问题; getInstance()
使用您在Twitter
中指定的身份验证详细信息返回ConfigurationBuilder
。
如果您想使用getSingleton()
,则需要使用您的身份验证详细信息对ConfigurationContext
进行一些启动。我希望有一些关于如何做到这一点的文件
在旁注中,我建议不要将您的OAuth密钥发布到公共网站