Android Twitter4j получает сообщение об ошибке при ретвите или отправке сообщения - PullRequest
2 голосов
/ 20 августа 2011

Я создаю приложение для интеграции с Twitter, используя API Twitter4j.

Сейчас моя проблема в том, когда я пытался сделать ретвит или отправить прямые сообщения, такие как:

twitter.retweetStatus (SID); twitter.sendDirectMessage (uid, msg);

я получил следующую ошибку:

> 08-20 11:11:17.409: WARN/System.err(233): 403:The request is
> understood, but it has been refused. An accompanying error message
> will explain why. This code is used when requests are being denied due
> to update limits
> (http://support.twitter.com/forums/10711/entries/15364). 08-20
> 11:11:17.409: WARN/System.err(233): Relevant discussions can be on the
> Internet at: 08-20 11:11:17.409: WARN/System.err(233):    
> http://www.google.co.jp/search?q=dbd7edaf or 08-20 11:11:17.409:
> WARN/System.err(233):     http://www.google.co.jp/search?q=012e63a7
> 08-20 11:11:17.409: WARN/System.err(233):
> TwitterException{exceptionCode=[dbd7edaf-012e63a7], statusCode=403,
> retryAfter=0, rateLimitStatus=null, version=2.1.11} 08-20
> 11:11:17.409: WARN/System.err(233):     at
> twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:199)
> 08-20 11:11:17.419: WARN/System.err(233):     at
> twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:75)
> 08-20 11:11:17.419: WARN/System.err(233):     at
> twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:128)
> 08-20 11:11:17.419: WARN/System.err(233):     at
> twitter4j.Twitter.retweetStatus(Twitter.java:661) 08-20 11:11:17.419:
> WARN/System.err(233):     at
> com.openxcell.zoodig.TimelineRe$3.onClick(TimelineRe.java:98) 08-20
> 11:11:17.419: WARN/System.err(233):     at
> android.view.View.performClick(View.java:2344) 08-20 11:11:17.419:
> WARN/System.err(233):     at
> android.view.View.onTouchEvent(View.java:4133) 08-20 11:11:17.419:
> WARN/System.err(233):     at
> android.widget.TextView.onTouchEvent(TextView.java:6510) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.View.dispatchTouchEvent(View.java:3672) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.429: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.439: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.439: WARN/System.err(233):     at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 08-20
> 11:11:17.439: WARN/System.err(233):     at
> com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
> 08-20 11:11:17.439: WARN/System.err(233):     at
> com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)
> 08-20 11:11:17.439: WARN/System.err(233):     at
> android.app.Activity.dispatchTouchEvent(Activity.java:1987) 08-20
> 11:11:17.439: WARN/System.err(233):     at
> com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
> 08-20 11:11:17.439: WARN/System.err(233):     at
> android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 08-20
> 11:11:17.449: WARN/System.err(233):     at
> android.os.Handler.dispatchMessage(Handler.java:99) 08-20
> 11:11:17.449: WARN/System.err(233):     at
> android.os.Looper.loop(Looper.java:123) 08-20 11:11:17.449:
> WARN/System.err(233):     at
> android.app.ActivityThread.main(ActivityThread.java:4203) 08-20
> 11:11:17.449: WARN/System.err(233):     at
> java.lang.reflect.Method.invokeNative(Native Method) 08-20
> 11:11:17.449: WARN/System.err(233):     at
> java.lang.reflect.Method.invoke(Method.java:521) 08-20 11:11:17.459:
> WARN/System.err(233):     at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
> 08-20 11:11:17.470: WARN/System.err(233):     at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 08-20
> 11:11:17.470: WARN/System.err(233):     at
> dalvik.system.NativeStart.main(Native Method)

Может кто-нибудь сказать мне, почему я получаю это? есть ли проблема с API? или где я ошибаюсь?

Любая помощь по этому вопросу будет оценена ..

Спасибо, Майюр Парех

Ответы [ 3 ]

4 голосов
/ 20 августа 2011

В предоставленной вами трассировке стека содержится сообщение о том, что произошло.

Из трассировки стека:

403: запрос понят, но он был отклонен.Прилагаемое сообщение об ошибке объяснит, почему.Этот код используется, когда запросы отклоняются из-за ограничений на обновление ( http: //support.twitter.com/forums/10711/entries/15364)

ссылка в сообщении предполагает наличие некоторых ограничений API.Вот сообщение со страницы:

Ограничения снимают некоторую нагрузку на закулисную часть Twitter и сокращают время простоя и количество ошибок.Ради надежности мы наложили некоторые ограничения на действия учетной записи, такие как следующие, запросы API, прямые сообщения и обновления.

Ниже приводится разбивка различных ограничений:

  1. Прямые сообщения: 250 в день .
  2. Обновления: 1000 в день .Ежедневный лимит обновлений далее разбивается на меньшие пределы для получасовых интервалов.Ретвиты считаются обновлениями.
  3. Изменения в учетной записи электронной почты: 4 в час .
  4. Следующие (ежедневно): Обратите внимание, что этотолько технический лимит, и есть дополнительные правила, запрещающие агрессивное поведение.Подробную страницу с описанием следующих ограничений и запрещенного поведения вы можете найти на странице «Следуйте ограничениям и рекомендациям».Технический лимит подписки составляет 1000 в день .
  5. Отслеживание (на основе учетной записи): если учетная запись подписана на 2000 других пользователей, дополнительные попытки подписки ограничиваются учетной записью-специфичные отношения.Страница «Ограничения соблюдения и рекомендации» содержит больше информации.
1 голос
/ 08 декабря 2014

Недавно я получил ту же ошибку при выполнении аналогичного кода. Чтобы исправить это, выполните следующие действия:

  • Перейти к https://apps.twitter.com/app/your_app_id
  • Нажмите на клавиши и получите токен
  • В Уровне доступа, нажмите изменить разрешение приложения и выберите третий вариант: Чтение, Запись и Доступ к прямым сообщениям
  • Нажмите на обновление. (Примечание: вам, возможно, придется добавить свой номер мобильного телефона и подтвердить с помощью otp, чтобы получить этот доступ, если у вас нет добавленного номера в Твиттере)
  • Восстановление ключа и секрета потребителя и токена и секрета доступа с помощью нажимной кнопки

И все готово! Ваша программа начнет работать.

1 голос
/ 31 августа 2011

в моем случае я получал эту ошибку, потому что ответ был не просто a JSON Object, но был JSON Array, и я пытался преобразовать его в JSONObject напрямую ..

Итак, ошибка устранена.

Спасибо @nicholas за ваш ответ помог мне много ..

...