2013-02-18 98 views
3

我正在开发一个Android应用程序以获取Twitter追随者。以下代码用于身份验证,并且我已成功登录。要获取Twitter追随者名单

consumer = new CommonsHttpOAuthConsumer(
         key, 
         secret); 
       CommonsHttpOAuthProvider provider = new CommonsHttpOAuthProvider(
         "http://twitter.com/oauth/request_token", 
         "http://twitter.com/oauth/access_token", 
         "http://twitter.com/oauth/authorize"); 

       String authUrl = provider.retrieveRequestToken(consumer, 
         TWITTER_CALLBACK_URL); 
       Log.e("Twittwer ", "Please authorize this app!"); 

       startActivity(new Intent(Intent.ACTION_VIEW, 
         Uri.parse(authUrl))); 

为了获得追随者清单我用下面的代码,但我得到了错误和logcat的连接

AccessToken accessToken = new AccessToken(consumer.getToken(), 
        consumer.getTokenSecret()); 
      ConfigurationBuilder builder = new ConfigurationBuilder(); 
      builder.setOAuthConsumerKey(key); 
      builder.setOAuthConsumerSecret(secret); 
      Configuration conf = builder.build(); 
      twitter = new TwitterFactory(conf).getInstance(); 
      twitter.setOAuthAccessToken(accessToken); 
      IDs followersId = twitter.getFollowersIDs(twitter.getId()); 
      do { 
       for (long i : followersId.getIDs()) { 



        System.out.println("follower ID #" + i); 
        System.out.println(twitter.showUser(i).getName()); 
        System.out.println(twitter.showUser(i) 
          .getProfileImageURL()); 
        System.out.println(twitter.showUser(i).getURL()); 

       } 
      } while (followersId.hasNext()); 
     } catch (TwitterException e) { 
      System.out.println("e........"+e.getMessage()); 
      e.printStackTrace(); 

     } 

的logcat:

02-18 16:13:10.632: W/System.err(734): Received authentication challenge is null 02-18 16:13:10.682: W/System.err(734): Relevant discussions can be found on the Internet at: 02-18 16:13:10.682: W/System.err(734): http://www.google.co.jp/search?q=a1259409 or 02-18 16:13:10.702: W/System.err(734):  http://www.google.co.jp/search?q=06b97274 02-18 16:13:10.712: W/System.err(734): TwitterException{exceptionCode=[a1259409-06b97274 2e9324ac-d074d7d2], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.3} 02-18 16:13:10.752: W/System.err(734):  at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:192) 02-18 16:13:10.903: W/System.err(734): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61) 02-18 16:13:11.012: W/System.err(734): at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:89) 02-18 16:13:11.062: W/System.err(734): at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:126) 02-18 16:13:11.123: W/System.err(734):  at twitter4j.TwitterBaseImpl.getId(TwitterBaseImpl.java:118) 02-18 16:13:11.142: W/System.err(734):  at com.nest.twitterfriendsfinder.MainActivity$getFollowers.doInBackground(MainActivity.java:276) 02-18 16:13:11.152: W/System.err(734):  at com.nest.twitterfriendsfinder.MainActivity$getFollowers.doInBackground(MainActivity.java:1) 02-18 16:13:11.192: W/System.err(734): at android.os.AsyncTask$2.call(AsyncTask.java:264) 02-18 16:13:11.212: W/System.err(734): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 02-18 16:13:11.232: W/System.err(734): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 02-18 16:13:11.302: W/System.err(734): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 02-18 16:13:11.362: W/System.err(734):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 02-18 16:13:11.362: W/System.err(734): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 02-18 16:13:11.362: W/System.err(734): at java.lang.Thread.run(Thread.java:856) 02-18 16:13:11.362: W/System.err(734): Caused by: java.io.IOException: Received authentication challenge is null 02-18 16:13:11.372: W/System.err(734): at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:397) 02-18 16:13:11.372: W/System.err(734): at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:345) 02-18 16:13:11.372: W/System.err(734):  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:276) 02-18 16:13:11.372: W/System.err(734): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479) 02-18 16:13:11.372: W/System.err(734): at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:34) 02-18 16:13:11.382: W/System.err(734):  at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:156) 

问题是什么在这段代码。我读了一些帖子,检查时间戳在模拟器中,但时间和日期在模拟器是正确的。请给我一些帮助。提前感谢..

[编辑] I this对不对?

+0

请帮我...没有找到任何解决方案。我被困在这个问题上 – user1767260 2013-02-18 11:33:06

回答

0

在我的项目中,我有这个代码以获取追随者。 也许主要与使用AsyncTask有关。

if (twitter == null){ 
     ConfigurationBuilder builder = new ConfigurationBuilder(); 
     Configuration conf = builder 
     .setOAuthConsumerKey(CONSUMER_KEY) 
     .setOAuthConsumerSecret(CONSUMER_SECRET) 
     .setOAuthAccessToken(oAuthAccessToken) 
     .setOAuthAccessTokenSecret(oAuthAccessTokenSecret) 
     .build(); 
     twitter = new TwitterFactory(conf).getInstance(); 
    } 


    new AsyncTask<Void, Void, Void>() { 
     @Override 
     protected Void doInBackground(Void... params) { 
      long lCursor = -1; 
      AccessToken accessToken = new AccessToken(oAuthAccessToken, oAuthAccessTokenSecret); 
      long userId = accessToken.getUserId(); 
      try { 
       IDs followersIDs = twitter.getFollowersIDs(userId, lCursor); 
       do { 
        for (long i : friendsIDs.getIDs()){ 
         Log.d("follower ID #", String.valueOf(i)); 
        } 
       }while(followersIDs.hasNext()); 
      } catch (TwitterException e) { 
       Log.i("fetchFollowers", e.getErrorMessage()); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void param) { 
     } 

    }.execute(); 
相关问题