2

我正在使用 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

4

3 回答 3

4

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

从堆栈跟踪:

403:请求被理解,但已被拒绝。随附的错误消息将解释原因。当请求因更新限制而被拒绝时使用此代码 ( http://support.twitter.com/forums/10711/entries/15364 )

消息中提供的链接表明存在一些 API 限制。以下是来自页面的消息:

限制减轻了 Twitter 幕后部分的一些压力,并减少了停机时间和错误页面。出于可靠性考虑,我们对帐户操作设置了一些限制,例如关注、API 请求、直接消息和更新。

以下是各种限制的细分:

  1. 直接消息:每天 250 条
  2. 更新:每天 1,000 次。每日更新限制进一步细分为半小时间隔的较小限制。转推被视为更新。
  3. 更改帐户电子邮件:每小时 4 次
  4. 关注(每日):请注意,这只是技术账户限制,还有其他规则禁止激进的关注行为。您可以在遵循限制和最佳实践页面上找到描述以下限制和禁止行为的详细页面。技术跟踪限制为每天 1,000 个
  5. 关注(基于账户):一旦账户关注了 2,000 名其他用户,额外的关注尝试会受到账户特定比率的限制。遵循限制和最佳实践页面有更多信息。
于 2011-08-20T06:10:52.390 回答
1

在我的情况下,我收到了这个错误,因为响应不仅仅是一个JSON Object,而是一个 JSON Array,我试图直接将它转换成 JSONObject..

所以这个错误现在已经解决了。

谢谢@nicholas,您的回答对我帮助很大..

于 2011-08-31T08:33:41.617 回答
1

最近我在执行类似的代码时遇到了同样的错误。要修复它,请按照下列步骤操作:

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

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

于 2014-12-08T10:22:50.653 回答