twitter4j: 401 учетные данные аутентификации отсутствуют или неверны - PullRequest
10 голосов
/ 03 мая 2011

В настоящее время я пытаюсь получить userTimeline для группы пользователей. Это работало для меня в прошлом, но теперь больше не работает. Я использую twitter4j и использую oauth. На данный момент я зарегистрировал 2 приложения в своей учетной записи, которые должны иметь доступ к Twitter-API. Однако со вчерашнего дня я получаю 401 - идентификационные данные отсутствуют или неправильно (пробовал оба приложения). Твиттер вносил какие-либо последние изменения в API? Должен ли я создать новую учетную запись Twitter? Это подходящий способ создать приложение и разрешить ему доступ к вашей учетной записи?

Это код:

ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
      .setOAuthConsumerKey("q...w")
      .setOAuthConsumerSecret("R...o")
      .setOAuthAccessToken("2...7")
      .setOAuthAccessTokenSecret("O....8");

  TwitterFactory tf = new TwitterFactory(cb.build());

    Twitter twitter = tf.getInstance();
  for ( Map.Entry<Long, String> entry : tmls.entrySet()) {

        long uid = entry.getKey();

        Paging paging = new Paging(1, count);

        ResponseList<Status> rls;

        try {
            rls = twitter.getUserTimeline(uid, paging);

            for ( int j = 0 ; j < rls.size() ; j++ ) {

                if (false == ltindex.contains(uid)) {


                    alsa.add(new String[] {  String.valueOf( rls.get(j).getId() ) , String.valueOf( uid ), rls.get(j).getText() , "", entry.getValue(), String.valueOf( rls.get(j).getCreatedAt().getTime() )  });

                }

            }


        } catch (TwitterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

  }

ошибка:

  401:Authentication credentials (http://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid conumer key/secret, access token/secret, and the system clock in in sync.
  error - Not authorized
  request - /1/statuses/user_timeline.json?user_id=14221532&include_rts=true&include_entities=false&count=10&page=1
  Relevant discussions can be on the Internet at:
    http://www.google.co.jp/search?q=ced778ef or
    http://www.google.co.jp/search?q=10a1ea9d
  TwitterException{exceptionCode=[ced778ef-10a1ea9d], statusCode=401, retryAfter=0, rateLimitStatus=RateLimitStatusJSONImpl{remainingHits=273, hourlyLimit=350, resetTimeInSeconds=1304422, secondsUntilReset=845, resetTime=Tue May 03 11:36:48 UTC 2011}, version=2.2.3-SNAPSHOT(build: ddf24547632bf3a28b899e3d75b110de43f71c0f)}
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:189)
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
    at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:85)
    at twitter4j.TwitterImpl.get(TwitterImpl.java:1738)
    at twitter4j.TwitterImpl.getUserTimeline(TwitterImpl.java:246)
    at getExpertTweets.getSpecificOpinions(getExpertTweets.java:89)
    at classifyTweet.main(classifyTweet.java:57)
  root@se1:~# sudo ntpdate pool.ntp.org

Ответы [ 6 ]

14 голосов
/ 04 июля 2013

У меня была такая же проблема.Ключ потребителя и секрет потребителя, которые я использовал, были правильными, и моя машина была синхронизирована.Проблема заключалась в том, что я не устанавливал URL обратного вызова, когда регистрировал свое приложение на dev.twitter.com.Как только я установил это, все просто работало.

4 голосов
/ 13 сентября 2013

Проблема с ключом потребителя и токеном. следуйте инструкциям.

войдите на https://dev.twitter.com/ и Goto My application означает ваше уважаемое приложение. и перейти в настройки и изменить права доступа Только для чтения в Чтение, запись и отправка сообщений

и обновите данные, а если они не будут обновлены, то заново создайте токен и обновите данные и вашу программу. и запустите программу и убедитесь, что у вас есть все файлы JAR этого в папке lib. и проблема будет решена.

1 голос
/ 27 октября 2014

Я подумала, что поделюсь этим, если это поможет кому-то поискать сообщение об исключении.

При тестировании аутентификации Twitter для приложения JSF я попробовал следующий вариант использования:

Откройте окно аутентификации Twitter. Введите правильные учетные данные и войдите в систему.

Это сработало. Тогда я попробовал:

Откройте окно аутентификации Twitter. Закройте окно аутентификации Twitter. Снова откройте окно аутентификации Twitter. Введите правильные учетные данные и нажмите Войти.

Последнее всегда приводило к отсутствию или неверному исключению учетных данных аутентификации 401.

Моя проблема заключалась в том, что сервер перезапускал процесс аутентификации в Твиттере, но значение RequestToken.getAuthenticationURL () не было должным образом передано обратно в пользовательский интерфейс и вызвало его для вызова API-интерфейса Twitter со старым URL.

Вкратце, убедитесь, что используемый клиентом URL-адрес аутентификации совпадает с ожидаемым сервером.

0 голосов
/ 08 августа 2016

Я столкнулся с той же проблемой, и я исправил, если дата и время устройства не правильно, то эта проблема возникнет ..

0 голосов
/ 21 января 2016

Я также столкнулся с этой проблемой, указав правильное системное время и ключ / секрет API.

Оказалось, что для URL-адреса обратного вызова необходимо установить значение https://api.twitter.com/oauth/request_token.вы увидите экран Авторизации Twitter.

Вы также можете нажать «Проверить OAuth», чтобы проверить его с помощью OAuth Tool, и передать https://api.twitter.com/oauth/request_token в качестве URI запроса для запроса POST.

0 голосов
/ 02 мая 2015

Сегодня 02.05.2015 Я получил похожую ошибку, используя версию twitter4j 3.0.x.

Я получил ее, пока не обновил twitter4j до версии 4.0.0.

  <dependencies>
  <dependency>
      <groupId>org.twitter4j</groupId>
      <artifactId>twitter4j-core</artifactId>
      <version>[4.0,)</version>
  </dependency>
  ...

...