使用Twitter4j从Android发布时使用xAuth的TwitterException

时间:2010-09-02 06:54:30

标签: android twitter twitter4j xauth

我正在使用twitter4j-2.1.3.jar向twitter发帖。我使用的代码是:

System.setProperty("twitter4j.oauth.consumerKey", TWITTER_CONSUMER_KEY);
System.setProperty("twitter4j.oauth.consumerSecret",TWITTER_SECRET_KEY); 
Twitter twitter = new TwitterFactory().getInstance(username,password);
AccessToken accessToken = twitter.getOAuthAccessToken();
twitter.updateStatus(": xAuth test");

我得到的错误信息是:

 TwitterException{exceptionCode=[e07c50ee-0000d883 1ac06e3f-626a1296], statusCode=401,   retryAfter=0, rateLimitStatus=null, version=2.1.3}

   at twitter4j.http.OAuthAuthorization.getOAuthAccessToken(OAuthAuthorization.java:185)
   at twitter4j.TwitterOAuthSupportBaseImpl.getOAuthAccessToken(TwitterOAuthSupportBaseImpl.java:108)
   at twitter4j.Twitter.getOAuthAccessToken(Twitter.java:54)
   at com.sfway.detailpage.CheckinTab$16$1.run(CheckinTab.java:640)
   TwitterException{exceptionCode=[1ac06e3f-626a1296], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.3}
   at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:307)
   at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
   at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
   at twitter4j.http.OAuthAuthorization.getOAuthAccessToken(OAuthAuthorization.java:178)

我尝试了另外一种方式:

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); 
configurationBuilder.setOAuthConsumerSecret(TWITTER_SECRET_KEY);
Configuration configuration = configurationBuilder.build();
twitter = new TwitterFactory(configuration).getInstance(username,password);
AccessToken token = twitter.getOAuthAccessToken();
twitter.updateStatus(": xAuth test");

在这两种方法中,我都在“twitter.getOAuthAccessToken()”行中收到错误。请告诉我有什么不对。我已经在14小时之前注册了我的应用程序,以获取秘密和消费者密钥。这是否与批准我的应用程序使用xAuth有关,如果是,我怎么知道他们是否在Twitter上为我的应用程序启用了XAuth。

4 个答案:

答案 0 :(得分:2)

您是否通过电子邮件发送了Twitter支持,以便让他们为您的应用启用xAuth?

Twitter只希望桌面和移动应用程序使用xAuth,因此注册的应用程序默认禁用xAuth,并且您需要Twitter上的某个人为您启用它。如果您的应用程序未启用xAuth,则会获得401。

要启用xAuth,请发送电子邮件至api@twitter.com,其中包含您的应用程序名称及其需要xAuth而非普通旧OAuth的原因(例如,它不适合在我的桌面应用程序中弹出Web浏览器)。

由于 Dhrumil Shah

答案 1 :(得分:0)

你看过这些帖子了吗?

http://groups.google.com/group/twitter4j/browse_thread/thread/d6dca9622f7cc42a?fwc=1

切换版本已解决了此问题

<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>2.1.0</version>
</dependency> 

答案 2 :(得分:0)

我使用Twitter4j和其他图书馆在Twitter OAuth上发布博客文章。你可以这样说: http://blog.sogeti.com/mobile/2010/03/twitter-oauth-for-android.html

此外,如果您使用的是Twitter4j2.1.3,那么它与Android 2.0及更高版本兼容。如果您仍然遇到问题,请告诉我,因为我使用Twitter4j 2.0.9开发了一个完整的Twitter应用程序。

答案 3 :(得分:0)

我同意Dhrumil Shah:在api@twitter.com上发送电子邮件,要求您的应用程序启用xAuth。看来你还没有这样做,所以xAuth服务方法只会在你调用时返回HTTP 401。