Zum Twittern in Java Programmen gab es schon seit längerem die Library JTwitter. Bisher konnte man dort einfach durch Eingabe des Twitter Logins und des Passworts neue Tweets schreiben. Twitter hat jedoch in den vergangenen Tagen dieses Verfahren, welches den Namen Basic Auth trägt, deaktiviert. Jetzt kann nur noch per OAuth auf die Twitter API zugegriffen werden.
Aus diesem Grund müssen auch die Java Programme, die JTwitter mit Basic Auth verwenden, angepasst werden. Neben einer neuen JTwitter Version ist dazu auch die Bibliothek Signpost OAuth notwendig. Außerdem muss das Programm unter http://dev.twitter.com/ als Twitter Application registriert werden. Nach der Registrierung erhält man die für OAuth benötigten Keys.
Mit dem Beispiel des JTwitter Autors funktioniert OAuth auch gut, solange man das Java Programm nur auf dem Desktop PC laufen lässt und jedes Mal eine PIN eingibt, die die Anwendung zum Twittern autorisiert. Soll die Anwendung aber im Hintergrund (z.B. als Cronjob) laufen, eignet sich dieses Beispiel nicht.
Mit OAuth ist es aber auch möglich, den Twitter Account dauerhaft mit der Twitter Application zu verbinden. Dazu habe ich auch wieder einen Beispielcode gefunden, mit dem der OAuth Token erstellt werden kann. Hierzu trägt man den Consumer Key und das Consumer Secret in dem Code ein und startet das Programm. Anschließend erhält man eine URL, die man im Browser eingibt. Nach dem Akzeptieren wird wieder eine PIN angezeigt, die man im Java Programm eingibt. Danach werden das OAuth Access token und das Secret Token ausgeben.
Nun kann mit folgendem Coding wieder eine Tweet erstellt werden, nachdem im Konstruktor der Klasse OAuthSignpostClient die Keys eingesetzt wurden:
OAuthSignpostClient oauthClient = new OAuthSignpostClient( consumerKey, consumerSecret, accessToken, accessTokenSecret); Twitter twitter = new Twitter(TWITTER_USER, oauthClient); twitter.setStatus(status);
Es ist jetzt also notwendig, dass sich jedes Programm auch als Anwendung bei Twitter registriert. Für mein einfaches Programm, dass die Nachrichten per Cronjob absendet, ist das natürlich etwas umständlich. Schreibt man aber eine richtige Twitter Anwendung, lässt sich dieser Vorgang so implementieren, dass er für den Anwender schnell abläuft und dieser sein Passwort nur noch auf der offiziellen Twitter Homepage eingeben muss.