2012-03-11 2 views
1

Я получаю сообщение об ошибке при попытке обновить свой статус от моего клиента Twitter. работает отлично, когда iam считывает статусы с помощью метода getHomeTimeLine(). Я действительно не знаю, где может быть ошибка. , пожалуйста, помогите!получить сообщение об ошибке при отправке твита из Twitter-клиента с помощью twitter4j

Twitter twitter = new TwitterFactory().getInstance(); 
     twitter.setOAuthConsumer(consumerKey, consumerSecret); 
     RequestToken requestToken = twitter.getOAuthRequestToken(); 
     AccessToken accessToken = null; 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     while (null == accessToken) { 
      System.out.println("Open the following URL and grant access to your account:"); 
      System.out.println(requestToken.getAuthorizationURL()); 
      System.out.print("Enter the PIN(if aviailable) or just hit enter.[PIN]:"); 
      String pin = br.readLine(); 
      try{ 
      if(pin.length() > 0){ 
       accessToken = twitter.getOAuthAccessToken(requestToken, pin); 
      }else{ 
       accessToken = twitter.getOAuthAccessToken(); 
      } 
      } catch (TwitterException te) { 
      if(401 == te.getStatusCode()){ 
       System.out.println("Unable to get the access token."); 
      }else{ 
       te.printStackTrace(); 
      } 
      } 
      System.out.println("token = "+accessToken.getToken()); 
      System.out.println("tokenSecret = "+accessToken.getTokenSecret()); 
     } 

это мой метод для входа

public void login()throws TwitterException{ 
    TwitterFactory factory = new TwitterFactory(); 
    AccessToken accessToken = new AccessToken(token, tokenSecret); 
    Configuration conf = new PropertyConfiguration(new Properties()); 
    OAuthAuthorization auth = new OAuthAuthorization(conf); 
    auth.setOAuthConsumer(consumerKey, consumerSecret); 
    auth.setOAuthAccessToken(accessToken); 
    twitterClient = factory.getInstance(auth); 
} 

это мой метод для обновления статуса

public void setStatus(String text) throws TwitterException { 

    if(twitterClient==null)throw new IllegalStateException("Please login first : "); 
    Status status; 
    try { 
     status = twitterClient.updateStatus(text); 
    } catch (TwitterException e) { 
     e.printStackTrace(); 
     throw e; 
    } 
    System.out.println("Status : "+status.getText()); 
} 

это мои сообщения об ошибках:

401: Аутентификационные учетные данные (https://dev.twitter.com/docs/auth) были mi ssing или неверно. Убедитесь, что вы установили действующий ключ/секретный ключ, токен доступа/секрет и синхронизацию системных часов. ошибка - только для чтения приложения не может POST запроса - /1/statuses/update.json Соответствующих дискуссий может быть в Интернете по адресу: http://www.google.co.jp/search?q=b2b52c28 или http://www.google.co.jp/search?q=1b433fc8 TwitterException {ExceptionCode = [b2b52c28-1b433fc8], StatusCode = 401, retryAfter = -1, rateLimitStatus = NULL, featureSpecificRateLimitStatus = NULL, версия = 2.2.6-СНАПШОТ (сборка: 404bccc2082954dc0d12612322791a37f3daa917)} на twitter4j.internal.http.HttpClientImpl.request (HttpClientImpl.java:185) на twitter4j.internal. http.HttpClientWrapper.request (HttpClientWrapper.java:65) at twitter4j.internal.http.HttpClientWrapper.post (HttpClientWrapper.java:102) в twitter4j.TwitterImpl.post (Twitte) rImpl.java:1927) на twitter4j.TwitterImpl.updateStatus (TwitterImpl.java:433) на twitter.Zwietschi.setStatus (Zwietschi.java:74) на twitter.Zwietschi.main (Zwietschi.java:93)

где проблема? , пожалуйста, помогите!

ответ

1

Это работает для меня, вы должны попробовать с ConfigurationBuilder.

ConfigurationBuilder cb = new ConfigurationBuilder(); 
cb.setOAuthConsumerKey("YOUR_APP_KEY"); 
cb.setOAuthConsumerSecret("YOUR_APP_SECRET"); 
cb.setOAuthAccessToken("USER_TOKEN_KEY"); 
cb.setOAuthAccessTokenSecret("USER_TOKEN_SECRET"); 

Twitter twitter = new TwitterFactory(cb.build()).getInstance(); 
String tweet="HELLO WORLD!"; 
twitter.updateStatus(tweet); 
3

Проверьте, если вы изменили разрешения ... Затем вам нужно будет регенерировать токены !!!

+0

Похоже, что этот код исключения используется для нескольких целей. Я, например, получаю его со статусом -1 для сломанной трубы, когда загрузка слишком длительная. –

1

Похоже, что на сегодняшний день (июнь 14) эта ошибка также возникает, когда не используется соединение ssl.

См. REST API, regarding 403 error code? для решения (включите SSL, используйте последний twitter4j).

1

Эта реализация работала для меня в версии Twitter4J API 3.0.3.

ConfigurationBuilder cb = new ConfigurationBuilder(); 
cb.setDebugEnabled(true).setOAuthConsumerKey(Config.CONSUMER_KEY) 
.setOAuthConsumerSecret(Config.CONSUMER_SECRET) 
.setOAuthAccessToken(Config.ACCESS_TOKEN) 
.setOAuthAccessTokenSecret(Config.ACCESS_TOKEN_SECRET); 
cb.setUseSSL(true);     
TwitterFactory twitterFactory = new TwitterFactory(cb.build()); 
twitter = twitterFactory.getInstance(); 

Линия, которая делает это работает

cb.setUseSSL(true); 

Слышал, что по умолчанию на Twitter4J API 3.0.5.

Смежные вопросы