2011-08-22 49 views
2

这是我在拨打twitter.getOauthRequestToken(callbackUrl)时得到的。 我已经添加了正确的消费者密钥和消费者密钥。问题在Oauth与twitter4j

401:Authentication credentials (https://dev.twitter.com/docs/auth) were missing or incorrect. Ensure that you have set valid conumer key/secret, access token/secret, and the system clock in in sync. 
<?xml version="1.0" encoding="UTF-8"?> 
<hash> 
    <error>Desktop applications only support the oauth_callback value 'oob'</error> 
    <request>/oauth/request_token</request> 
</hash> 

我调试了多次代码,发现上面的调用之前,每个凭证已到位。 任何使用过twitter4j的人都可以指出问题所在?或者我应该使用另一个oauth库?有什么建议么?

回答

2

我想你注册你的应用程序为“桌面”应用程序。转到Twitter应用程序并删除应用程序并创建一个新应用程序,或者使用“web”作为应用程序类型编辑现有应用程序。

+0

我在这里注册我的应用程序 - https://dev.twitter.com/apps/new并作为一个web应用程序。 – Shwetanka

+5

有一个[在登记怪癖(http://groups.google.com/group/twitter-development-talk/browse_thread/thread/0f744fe83fd9ef90),需要一个回调URL在注册页面或将其默认值,你到桌面应用。 –

+0

@Nischal,我有一个类似的问题http://stackoverflow.com/questions/15326040/twitter4j-getting-inconcistent-authentication-errors,很想得到你的想法。 – user1172468

2

试试这个:

Twitter twitter = new TwitterFactory().getInstance(); 
twitter.setOAuthConsumer("yourConsumerKey","yourConsumerSecret"); 
RequestToken requestToken = twitter.getOAuthRequestToken(); 

session.setAttribute("token", requestToken.getToken()); 
session.setAttribute("tokenSecret", requestToken.getTokenSecret()); 

// REDIRECT USER TO TWITTER LOGIN PAGE 

response.sendRedirect(requestToken.getAuthorizationURL()); 

回调URL页面代码:

Twitter twitter = new TwitterFactory().getInstance(); 
twitter.setOAuthConsumer("yourConsumerKey","yourConsumerSecret"); 

AccessToken aToken = twitter.getOAuthAccessToken(new RequestToken((String) session.getAttribute("token"), (String) session.getAttribute("tokenSecret"))); 
       twitter.setOAuthAccessToken(aToken); 
+0

完美的解决方案,非常感谢。 –

9

我有同样的问题,但是当我填写回调URL的领域我的应用程序正常运行。也许你应该填写回调URL的字段。