转推或发送消息时Android Twitter4j收到错误

时间:2011-08-20 06:03:11

标签: android twitter4j

我正在使用Twitter4j API为Twitter集成制作应用程序。

现在我的问题是, 当我试图转发或发送直接信息时:

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有什么问题吗? 或者我犯错了?

任何关于此的帮助都会得到赞赏..

谢谢你, Mayur Parekh

3 个答案:

答案 0 :(得分:4)

您提供的堆栈跟踪包含一条消息,告诉您发生了什么。

来自stacktrace:

  

403:该请求已被理解,但已被拒绝。一个   随附的错误信息将解释原因。此代码用于   由于更新限制,请求被拒绝   (http://support.twitter.com/forums/10711/entries/15364

link provided in the message表明存在一些API限制。以下是该页面的消息:

  

限制缓解了Twitter幕后部分的一些压力,减少了停机时间和错误页面。为了提高可靠性,我们对以下帐户操作,API请求,直接消息和更新设置了一些限制。

以下是各种限制的细分:

  1. 直接留言: 每天250次
  2. 更新: 每天1,000 。每日更新限制进一步细分为半小时间隔的较小限制。转推被视为更新。
  3. 帐户电子邮件的更改: 每小时4
  4. 关注(每日):请注意,这只是技术帐户限制,并且还有其他规则禁止侵略性关注行为。您可以在“遵循限制和最佳实践”页面上找到描述以下限制和禁止行为的详细页面。技术跟踪限制为 1,000每天
  5. 关注(基于帐户):一旦帐户关注了2,000个其他用户,其他关注尝试将受到特定帐户比率的限制。 “关注限制和最佳实践”页面提供了更多信息。

答案 1 :(得分:1)

在我的情况下我收到此错误导致响应不只是 JSON Object JSON Array而我正在尝试直接将它转换为JSONObject ..

所以现在解决了错误。

谢谢你@nicholas你的答案帮助我很多..

答案 2 :(得分:1)

最近我在执行类似代码时遇到了同样的错误。要解决此问题,请按以下步骤操作:

  • 转到https://apps.twitter.com/app/your_app_id
  • 点击密钥和访问令牌
  • 在“访问级别”中,单击“修改应用程序权限”,然后选择第三个选项:“读取,写入和访问直接消息”
  • 点击更新。 (注意:如果你没有在Twitter上添加你的手机,你可能需要添加手机号并通过otp验证以获得此访问权限)
  • 重新生成消费者密钥和&秘密和访问令牌&使用可点击按钮的秘密

你完成了!你的程序将开始工作。