2013-05-30 4 views
1

, хотя я добавил ключ потребителя, секретный ключ в конфигурации, я получаю ошибку 401. Но тот же файл конфигурации хорошо работает для следующих401 Ошибка при создании twitterstream

TwitterFactory twitterFactory = new TwitterFactory(configuration); 
Twitter twitterClient = twitterFactory.getInstance(); 

, но не работает для

TwitterStreamFactory twitterStreamFactory = new TwitterStreamFactory(configuration); 
TwitterStream twitterStreamClient = twitterStreamFactory.getInstance(); 
FilterQuery filterQuery = new FilterQuery(followersId); 
    twitterStreamClient.addListener(statusListener); 
    twitterStreamClient.filter(filterQuery); 

я получил ошибку в

[Twitter Stream consumer-1[Establishing connection]] INFO - 401:Authentication credentials (https://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid consumer key/secret, access token/secret, and the system clock is in sync. 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<title>Error 401 Unauthorized</title> 
</head> 
<body> 
<h2>HTTP ERROR: 401</h2> 
<p>Problem accessing '/1.1/statuses/filter.json'. Reason: 
<pre> Unauthorized</pre> 

</body> 
</html> 

Когда я напечатать System.out.println(twitterStreamClient.getOAuthAccessToken().getTokenSecret()); он показывает accesstoken секретное значение. Я смущен этим. Кто-нибудь может мне помочь?

ответ

1

Вы должны указать ключ/секрет пользователя и ввести токен/секрет в twitter4j.properties и поместить его в пакет src в своем проекте. После этого записи

TwitterStream ts = new TwitterStreamFactory().getInstance();

вы добавили Библиотека/twitter4j-STREAM-3.0.3.jar в библиотеку?

1

Мне нужно было запустить одно приложение для twitter риппера и java-приложение и внутри Tomcat webapp. Борьба с classpath и whatnot twitter4j.properties не найден. Я начал давать явный объект конфигурации.

Теперь его легко сохранить в Twitter4J, OAuth и другие параметры приложения в одном файле myapp.properties или в таблице базы данных. Здесь я создаю потоковый и неинтегрирующий объект источника Twitter с одинаковыми конфигурациями.

ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(debug) 
     .setPrettyDebugEnabled(debug) 
     .setHttpConnectionTimeout(15*1000) 
     .setHttpReadTimeout(60*1000) 
     .setIncludeRTsEnabled(config.getBoolean("includeRetweets")) 
     .setIncludeEntitiesEnabled(config.getBoolean("includeEntities")) 
     .setOAuthConsumerKey(config.getProperty("auth.key")) 
     .setOAuthConsumerSecret(config.getProperty("auth.secret")) 
     .setOAuthAccessToken(config.getProperty("auth.token")) 
     .setOAuthAccessTokenSecret(config.getProperty("auth.tokenSecret")); 

    Configuration tfConf = cb.build(); 
    twitter = new TwitterStreamFactory(tfConf).getInstance(); 
    twitterNoStream = new TwitterFactory(tfConf).getInstance(); 
    . . . . . 
    // later once we are done with twitter, call shutdown 
    twitter.shutdown(); 
    twitterNoStream.shutdown(); 
Смежные вопросы