Twitter身份验证错误“缺少身份验证凭据”

时间:2015-03-28 08:55:26

标签: java authentication twitter twitter-oauth twitter4j

我在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)

1 个答案:

答案 0 :(得分:2)

删除行

twitter = TwitterFactory.getSingleton();

解决您的问题; getInstance()使用您在Twitter中指定的身份验证详细信息返回ConfigurationBuilder

如果您想使用getSingleton(),则需要使用您的身份验证详细信息对ConfigurationContext进行一些启动。我希望有一些关于如何做到这一点的文件

在旁注中,我建议不要将您的OAuth密钥发布到公共网站