2011-08-22 47 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的字段。