Twitter4j

katzitatzi

Neues Mitglied
Hallo liebe Leute!

Bin dabei die TwitterAPI mit Twitter4j anzusprechen. Die Methoden, die keine oAuth erfordern, funktionieren. Es scheitert aber bei getFollowers.

Mein oAuth Aufruf sieht so aus:
Code:
AccessToken accesstoken = new AccessToken(token, tokensecret);

Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey, consumerSecret, accesstoken);

twitter.verifyCredentials();
Folgende Abfrage liefert true:

Code:
twitter.isOauthEnabled();
Zwei Methoden später versuche ich mit
Code:
twitter.getFollowersIDs(irgendeineUserID);
die Follower abzurufen, worauf ich Folgendes als Error bekomme:

401:Authentication credentials were missing or incorrect.


Die App ist eine bei Twitter registrierte Client App mit ConsumerKey, ConsumerKey and SingleAccessToken, die durch kopieren in den Code eingefügt wurde, daher sollten sie auf jeden Fall stimmen.

Wo liegt mein Fehler? Vllt in der darauffolgenden Verwendung?

Wäre für den Hinweis sehr dankbar,
Viele Grüße,
Kateryna
 

katzitatzi

Neues Mitglied
Code:
AccessToken accesstoken = new AccessToken("accessToken", "tokenSecret");
	Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance("consumerKey","consumerSecret", accesstoken);
		
	public void getOAuth(){
		try {
			System.out.println(twitter.verifyCredentials().getId());
			System.out.println("Restliche Abfragen: "+twitter.getRateLimitStatus().getRemainingHits());
			System.out.println("Oauth ist an"+twitter.isOAuthEnabled());
		} catch (TwitterException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	    }

Danach erfolgt folgender Methodenaufruf, der eine Authentifizierung benötigt. Dabei werden aud der esternen txt-Datei die IDs der User ausgelesen und einzelnene Abfragen zu den Followern von diesen geschickt.

Code:
public void getFollowers (){
		
		System.out.println("Im getFollowers");
		List<Integer> ids = idsLesen(idUserOutput);
		Iterator<Integer> iterIds =ids.iterator();
		System.out.println("Anzahl IDs1 "+ids.size());
		try {
			System.out.println("Auth "+twitter.isOAuthEnabled());

			System.out.println("Check"+twitter.getAuthorization().toString());
			System.out.println("Auth "+twitter.isBasicAuthEnabled());
		while(iterIds.hasNext()){
				
				IDs idsFollowers =twitter.getFollowersIDs(iterIds.next());
				
				int [] tempArray = idsFollowers.getIDs();
				idsSchreibenFollower(idFollowerOutput, tempArray);
				System.out.println("Anzahl IDs2 "+tempArray.length);
				
				while (idsFollowers.getNextCursor() > 0){
				idsFollowers.getNextCursor();
				tempArray = twitter.getFollowersIDs(idsFollowers.getNextCursor()).getIDs();
				idsSchreibenFollower(idFollowerOutput, tempArray);
				}
				}
		
			} catch (TwitterException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}		
	}
Als Antwort kommt zurück
Code:
401:Authentication credentials were missing or incorrect.
{"request":"\/1\/followers\/ids.json?user_id=3889100&cursor=-1","error":"This method requires authentication."}
TwitterException{exceptionCode=[1981aa43-42543b86], statusCode=401, retryAfter=0, rateLimitStatus=RateLimitStatusJSONImpl{remainingHits=347, hourlyLimit=350, resetTimeInSeconds=1291038, secondsUntilReset=3501, resetTime=Mon Nov 29 14:47:56 CET 2010}, version=2.1.7}
	at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:311)
	at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
	at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:94)
	at twitter4j.Twitter.getFollowersIDs(Twitter.java:1174)
	at twitter4j.Twitter.getFollowersIDs(Twitter.java:1167)
	at logik.TwitterCon.getFollowers(TwitterCon.java:238)
	at logik.Main.main(Main.java:28)

Ich lasse mir die OAuth ausgeben und sie sieht folgendermaßen aus:
Code:
CheckOAuthAuthorization{consumerKey='xxxxxxxxxxxxx', consumerSecret='******************************************', oauthToken=AccessToken{screenName='null', userId=0}}

Aber den AccessToken habe ich doch am Anfang schon gesetzt und die Abfragen 
[CODE]
twitter.getID();
twitter.getScreenName() ;

geben jeweils die richtigen Werte zurück, obwohl sie nie im Code explizit gesetzt wurden. Deshalb verstehe ich nicht warum sie dort null sind, er hat mich ja doch schon als User erkannt. Wie soll ich die Werte sonst setzen?:autsch:

Gruß,
Kateryna
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben