Twitter4j klappt einfach nicht

  • Antworten:8
Barbaric-Chicken
  • Forum-Beiträge: 23

07.02.2013, 12:10:18 via Website

Hallo,

ich würde gerne Twitter in meiner app einbinden und wollte dafür das viel gelobte Twitter4j benutzen.

Leider klappt da absolut gar nix jedes mal wenn ich auf den Button klicke der Twitter starten soll, stürzt die app einfach ab mit der Meldung "musste beendet werden"...

Dabei müsste ich eigentlich alles eingestellt haben.
Ich habe die Twitter4j.jar in meinen library Ordner getan. Kann auch darauf zugreifen.

Ich habe bei Twitter selbst eine App angelegt und sämtlich Consumerkeys/tokens und Acceskeys/tokens erhaten. Ich habe die app auf read write und driect messages eingestellt bei twiiter.

Die keys and tokens habe ich alle bei der Twitter4j.properties liste eingetragen. Die Liste selbst in mein root Verzeichnis meiner Anwendung kopiert.
Dann habe ich von hier twitter4j.org/en/code-examples.html das aller erste Code-Beispiel genommen und ausprobiert. Nun stürzt alles ab.

Leider hat twitter4j keinen support link oder ich finde ihn einfach nicht keine Ahnung. Andere Anleitungen im Internet zeigen unrealistisch große Quellcodes an, die über mehrere Klassen und zig hundert Zeilen Code gehen. Das finde ich ist im Gegensatz zum behaupteten Code-Example einfach unrealistisch...

weiß irgendjemand rat? Hat jemand Erfahrungen damit gemacht?

MfG

Barbaric-Chicken

Antworten
Christian
  • Forum-Beiträge: 307

07.02.2013, 22:49:57 via Website

Hi,


Leider klappt da absolut gar nix jedes mal wenn ich auf den Button klicke der Twitter starten soll, stürzt die app einfach ab mit der Meldung "musste beendet werden"...

Haste mal in die LogCat geschaut warum dein App abstürzt?

mfg Christian

— geändert am 07.02.2013, 22:50:33

Antworten
Barbaric-Chicken
  • Forum-Beiträge: 23

08.02.2013, 10:56:20 via Website

Hallo,

im Log steht dann folgendes:
02-08 10:42:28.502: E/AndroidRuntime(13867): java.lang.IllegalStateException: Authentication credentials are missing. See twitter4j.org/configuration.html for the detail.
02-08 10:42:28.502: E/AndroidRuntime(13867): at twitter4j.TwitterBaseImpl.ensureAuthorizationEnabled(TwitterBaseImpl.java:200)
02-08 10:42:28.502: E/AndroidRuntime(13867): at twitter4j.TwitterImpl.post(TwitterImpl.java:1869)
02-08 10:42:28.502: E/AndroidRuntime(13867): at twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:241)

Über den Link kommt man nur auf eine Fehlerseite,

eine Suche bei google ergab das dann wohl mit meinen Consumer/Access keys etwas nicht stimmt die in der twitter4j.properties angegeben sind. Nur selbst wenn ich es noch 5 mal überprüfe, die sind die selben wie sie mir bei twitter angezeigt werden.

Oder muss die propertis file nicht einfach in das root-Verzeichnis? Aber wohin sonst? :(

MfG

Antworten
Phil G.
  • Forum-Beiträge: 86

08.02.2013, 11:07:35 via Website

Das mit dem Propertiesfile hat bei mir auch nicht hingehauen
ich habs in der app gemacht

1ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
2 configurationBuilder.setOAuthConsumerKey("consumerKey");
3 configurationBuilder.setOAuthConsumerSecret("consumerSecret");
4 configurationBuilder.setOAuthAccessToken("accessToken");
5 configurationBuilder.setOAuthAccessTokenSecret("accessSecret");
6 Configuration configuration = configurationBuilder.build();
7
8 twitter = new TwitterFactory(configuration).getInstance();
9
10 AccessToken token = null;
11 try {
12 token = twitter.getOAuthAccessToken();
13 } catch (TwitterException e1) {
14 e1.printStackTrace();
15 return false;
16 }
17 // Log.d("KAN", "Access token: " + token.getToken());
18 // Log.d("KAN", "Access token secret: " + token.getTokenSecret());
19 return true;

Antworten
Barbaric-Chicken
  • Forum-Beiträge: 23

08.02.2013, 12:12:09 via Website

Hallo,

also dein Code funktioniert soweit ohne Absturz. Nur wenn ich dann die Zeilen noch adde anschließend

1try {
2 twitter.updateStatus("TEST");
3 } catch (TwitterException e) {
4 // TODO Auto-generated catch block
5 e.printStackTrace();
6 }

crashed die App wieder.

Im Log steht dann:
102-08 12:09:40.052: E/AndroidRuntime(25819): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:150)
202-08 12:09:40.052: E/AndroidRuntime(25819): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
302-08 12:09:40.052: E/AndroidRuntime(25819): at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
402-08 12:09:40.052: E/AndroidRuntime(25819): at twitter4j.TwitterImpl.post(TwitterImpl.java:1871)
502-08 12:09:40.052: E/AndroidRuntime(25819): at twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:241)

Ich verstehe das alles wohl einfach nicht^^ es kommt ja auch gar kein Fenster bei dem man sich als Benutzer einloggt. Oder muss das vorher wieder implementiert werden irgendwie?

MfG

Antworten
Barbaric-Chicken
  • Forum-Beiträge: 23

08.02.2013, 14:54:19 via Website

Hi,

dieses Tutorial hatte ich auch schon mal gefunden. Aber das ist 1. nicht für Android und 2. für Desktopanwendungen. Soweit ich das Verstanden habe muss Twitter auf Browseranwendung gestellt sein damit das mit Android funktioniert.

Trotzdem Danke.

MfG

Antworten
Phil G.
  • Forum-Beiträge: 86

08.02.2013, 16:07:35 via Website

Hast du Dir das wirklich richtig durchgelesen ? Das ist genau der Weg wie es läuft...

Also das Prozedere ist doch wie folgt

deine APP ist bei twitter registriert -> damit ein User die nutzen kann, muss er sie priviligieren/freischalten (oauth)

Wenn du das Facebook SDK nutzt, hast du genau die selbe Vorgehensweise. Facebook ist bloss so nett, wenn du das Login startest bietet er Dir gleich das bekannt FB Login und reicht die Daten an deine App durch.
Twitter4J ist eine freie Bibliothek und hat ja nix mit Twitter zu tun, daher ist hier mehr Handarbeit gefragt.

hier mal noch ein Link zum Thema:

http://jeungun.wordpress.com/2009/09/03/quick-and-dirty-twitter4j-oauth-for-web-apps/

Antworten
Barbaric-Chicken
  • Forum-Beiträge: 23

09.02.2013, 11:15:09 via Website

Hallo,

Danke an Alle es klappt jetzt =) Hat ja nur mein halbes Leben lang gedauert.

Der Trick ist das alles in einem AsynTask ablaufen muss, was erstmal etwas verwirrend ist.

Vielen Dank an dieser Stelle an Adil und seinen Blog adilatwork.blogspot.co.uk/2011/12/android-twitter-login-using-twitter4j.html der mir wirklich sehr geholfen hat.

Danke auch an euch hier.

Edit: Okay, es stürzt ab wenn man auf abbrechen klickt anstatt sich einzuloggen, woran kann das liegen?
Edit2: Hat sich erledigt

MfG

— geändert am 09.02.2013, 11:46:42

Antworten