Spring: Unterschiedliche Werkzeuge in einem Java-Framework vereint
Das Spring Java-Framework bietet viele hilfreiche Funktionalitäten wie z.B. die Entkopplung von Anwendungskomponenten (DI: Dependency Injection), die Java-Programmierern über Minimierung von Objektabhängigkeiten die Arbeit erleichtern. Mit Hilfe von „ganz normalen“ Java Objekten (POJOS: Plain Old Java Objects) werden hierbei externe Abhängigkeiten automatisch vom Container (IoC: Inversion of Control) aufgelöst. Unter den PHP-Frameworks unterstützen z.B. FLOW3 oder das Zend Framework 2 dieses objektorientierte Entwurfsmuster. Spring vereiningt in der Java-Welt unterschiedliche Werkzeuge für z.B. Webintegration, Datenhandling, Ausgabe auf mobilen Plattformen oder eben Integration von sozialen Netzwerken mit Spring Social in einem Framework. Mehr zu den Spring-Funktionalitäten ist unter Springsource.org zu finden.
Spring Social und Social Templates für OAuth
Spring Social ist eine der zahlreichen Erweiterungen des Spring-Frameworks um auf einfache Art und Weise soziale Netzwerke wie Twitter, Facebook oder Linkedin in eigene Java-Anwendungen zu integrieren. Insbesondere Autorisierungssprozesse in externen sozialen Netzwerken über OAuth werden mit Spring Social vereinfacht. OAuth ist ein offenes Protokoll das eine standardisierte, sichere API-Autorisierung für Applikationen jeder Art erlaubt. Alle großen sozialen Netzwerke wie z.B. Twitter, Facebook, Linkedin, Foursquare, Google oder Yahoo unterstützen OAuth. Somit ist der Umgang mit OAuth unerlässlich bei der Integration von Daten aus sozialen Netzwerken in eigene Anwendungen.
Da alle großen sozialen Netzwerke inzwischen REST-basierte Schnittstellen anbieten, kann man die Nutzerautorisierung bei der Kommunikation mit sozialen Netzwerken auch direkt über die jeweilige REST API erledigen oder dafür z.B. das RestTemplate in Spring verwenden. Nur leider ist das oft nicht ganz einfach. Hier kommen die Social Templates von Spring Social ins Spiel. Diese Social Templates verbergen quasi die Komplexität der unterliegenden REST API und erlauben über das Erzeugen einer Instanz mit Konstruktorargumenten unkomplizierten OAuth-Zugriff als Einzeiler. Im Fall von Twitter mit Verwendung des Spring Social TwitterTemplates sieht das z.B. wie folgt aus:
TwitterTemplate twitter = new TwitterTemplate(apiKey, apiSecret, accessToken, accessTokenSecret);
Um nach der Autorisierung mit dem Spring Social TwitterTemplate z.B. den Screen-Namen des eingeloggten Nutzers abzurufen, reicht der folgende Einzeiler:
String screenName = twitter.getProfileId();
Ein neuer Tweet wird mit Spring Social z.B. so gesendet:
twitter.updateStatus("Hey, I'm tweeting with #Spring Social!");
Spring Social Templates sind für Twitter, Facebook, Linkedin und TripIt verfügbar. Spring Social bietet zudem Möglichkeiten für das langfristige Management von OAuth-Verbindungen (Update: Kommentar dazu von Craig Walls, dem Autor des Springsource-Blogartikels Socializing Spring Applications). Um zu verhindern, das sich die Nutzer jedes Mal bei Zugriff auf die eigene Anwendung immer wieder neu bei den externen Netzwerken anmelden müssen, kann Greenhouse verwendet werden. Greenhouse ist eine weitere Spring-Erweiterung, die dafür sorgt das die Zugrifftokens von OAuth für weitere Sessions in einer relationalen Datenbank als ServiceProvider-Tabelle gespeichert werden.
Wie die Arbeit mit den Spring Social Templates und Greenhouse genau funktioniert, wird von Craig in dem Springsource Blogpost Socializing Spring Applications detailliert beschrieben. Spring Social ist derzeit in Version 1.0.2 verfügbar.
Weiterführende Links:


![Open Source auf Siegeszug: Freie Software wird die Welt regieren [Studie]](http://t3n.de/uploads/t3n-news-post-458660_Open-Source-Featured_medium.jpg)






von Craig Walls 05.03.2012 (18:06Uhr) 1.
My German is not very good, so please excuse me for writing this comment in English...But I wanted to clarify that Spring Social *does* have support for long-term management of OAuth connections. In fact, that is the primary feature of the Spring Social Core project. The connection repository stores away access tokens received during the OAuth authorization flow and makes them available for later use. You can still use the templates on their own without using Spring Social's connection support, but you lose out on the token-management features.
Nevertheless, thanks for the nice article on Spring Social. I'll add a link to it from Spring Social's homepage.
von Monika Steinberg 05.03.2012 (18:12Uhr) 2.
@Craig Walls thank you very much for the update/correction! I will place a hint to your comment in the text! Best regards from Hannover!
von eigene Anwendung en 05.03.2012 (19:27Uhr) 3.
Gibt es Beispiele für den technischen Einsatz ? Twitter ist dummerweise public und wenn ich z.b. eine App zur Absprache von Handwerkern oder Pizza-Taxis oder Taxis damit schreiben würde, sähe man nur "Computersprech" in den Tweets oder halt private Messages. Gut. Das könnte man mit eigenen Servern regeln. Aber Dinge wie TV-Konsum will man vielleicht kollektiv absprechen oder (mit Spezial-Apps aber auch mit den normalen Clients) live über die aktuelle Jauch-Sendung oder Gottschalk diskutieren oder bei der Millionenfrage live realtime mit voten so das Twitter sich hier doch anbietet. D.h. ein Teil der Postings wäre "Technisch" z.b. "19:20 (A) ist richtig #wer-wird-millionaer" andere Teile wären normal lesbar "Er soll Angelina fragen wie viel Prozent Unfug in der Yellow-Press steht #Gottschalk-Live #q23-@willi" und technisch "#q23-@willi-#gottschalk-live: Ja das soll er fragen". Die Kodierungen müssen knapp sein und Spezial-Clients würden drauf anspringen und zu @Willis Fragevorschlag ein "++/+/-/--/~/?/bitte-filtern" einblenden wo man dann draufdrückt um zu voten. Wenn Gottschalk interessiert ist, würden und Angelina dann realtime die Frage-Top10 sehen. Unfug kann man ja filtern und den Poster ignoren.
Twitter bietet leider keine dezidierten eigenen Server z.b. für Parteitage, Spezial-Software, Wasserstands-Meldungen von Kanälen, Temperatur-Fühlern, Regenmengen/Windgeschwindigkeits-Messgeräten oder andere geschlossene Gesellschaften an. Ich kann in Email-Programme ja auch mehr als einen Email-Provider eintragen.
Da ich keine Beispiele spezialisierter Twitter-Apps kenne, weiss ich nicht was man das machen darf und spare mir also die Programmierung cooler Apps.
Diese Börsen-Websites oder Analysten oder Vermögens-Berater könnten beispielsweise eine App machen wo man einträgt was man (z.b. in den beliebten "Muster-Depots") gekauft/verkauft hat und das wären auch teilweise technische Daten bzw. "Computersprech" die für viele schlecht lesbar wären.
Oder alle Tankstellen würden regelmäßig bzw. bei Änderungen ihre Preise twittern. Oder Supermärkte die Verfügbarkeit von Grillkohle und Bratwürstchen. Oder Erdöl-Händler die Preise und Verfügbarkeit.
Oder man sucht ein Ersatzteil für ein Auto (so wie bei Die Ludolfs wenn einer anruft), kodiert den Tweet entsprechend und mit Spezial-Apps bei den Verwertern (wie z.B. den Ludolfs) kann man dann antworten und den Preis antworten und sieht auch schon ob die Konkurrenten bessere Angebote gemacht haben. Man sieht natürlich wie weit der Kunde weg ist. Das nennt man kapitalistischen Markt und Zusammenführung von Angebot und Nachfrage.
Technisch alles trivial. Bis Trivialpatente kommen oder man abgemahnt wird.
Twitter als Fundament für Awareness & Hive. So wie damals HTML (Texte für Menschen) durch XML (Texte auch für Computer verständlich) abgelöst wurde und man dank Microformate massivste Leistungs-Steigerungen hat (oder hätte).
von Social Intranet: Social-Media-Skills der… 19.09.2012 (11:59Uhr) 4.
[...] [...]