Dezember 2008
OpenSocial – Persistenz und Kommunikation
Social Networks standardisiert
Im fünften Teil der OpenSocial-Reihe wird das Thema Persistenz und Kommunikation behandelt. Es werden anwendungsspezifische Daten in das Benutzerprofil gespeichert und Daten mit einem eigenen Server abseits des OpenSocial-Containers ausgetauscht.
Text: André Wussow
Persistenz
Im vorherigen Teil der Serie wurde die Freundesliste eines aktiven Users aus einem OpenSocial-Container geladen. Generell sind mittels dieser Vorgehensweise sämtliche Benutzerbezogenen Daten, also gesamte Profile, abrufbar. Möchte man jedoch eine kleine Applikation erstellen, die solche Daten nicht nur ausliest, sondern diverse Daten auch behalten, also speichern soll, kommt das Thema Persistenz ins Spiel.
Die OpenSocial API unterstützt das benutzer- und applikationsspezifische Speichern und Auslesen von selbst definierten Feldern. Das bedeutet, dass solche Daten immer im Benutzer- und Applikationskontext stehen müssen. Sie werden in dem Profil des entsprechenden Nutzers hinterlegt; ein Zugriff auf die Daten, beispielsweise aus einer anderen Applikation heraus, ist nicht möglich. Das Abspeichern von globalen Anwendungsdaten war in den Versionen 0.5 und 0.6 der API noch möglich, wurde aber mit der Version 0.7 abgeschafft.
Profildaten können grundsätzlich mit einem DataRequest verarbeitet werden. Um beispielsweise Daten aus der Applikation heraus zu aktualisieren, wird diesem Request ein UpdatePersonAppDataRequest zugefügt. Listing 1 – Applikationsdaten im Profil speichern:
function setAppData() {var req = opensocial.newDataRequest();var spielerstatus = "Power-User";var spielstand = 1024;req.add(req.newUpdatePersonAppDataRequest("VIEWER", "Spielerstatus", spielerstatus));req.add(req.newUpdatePersonAppDataRequest("VIEWER", "Spielstand", spielstand));req.send(handleSetAppData, "update_appdata");}
Analog dazu können die Daten auch wieder per DataRequest angefordert werden. Dazu werden zunächst ein entsprechender FetchPersonRequest inklusive entsprechendem Viewer dem DataRequest zugefügt, die auszulesenden Felder definiert und per FetchPersonAppDataRequest an den angelegten Viewer gebunden. Was danach mit den angeforderten Daten geschehen soll, wird durch eine Callback-Funktion (hier: handleGetAppData) festgelegt. Listing 2 – Applikationsdaten aus dem Profil anfordern:
function getAppData() {var req = opensocial.newDataRequest();var fields = [ "Spielerstatus", "Spielstand" ];req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "viewer");req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data");req.send(handleGetAppData);}
In dieser Callback-Funktion können die angeforderten Daten weiterverarbeitet werden. Über den Viewer selbst wird die Bezugsperson ermittelt, also der Benutzer der Applikation. Die eigentlichen Daten befinden sich in den entsprechenden Viewer-Daten und sind in einem Array über die User-ID und das korrespondierende Feld verfügbar. In diesem Fall erfolgt lediglich eine Ausgabe der ausgelesenen Daten. Listing 3 – angeforderte Applikationsdaten verarbeiten:
function handleGetAppData(data) {var viewerData = data.get("viewer_data");var viewer = data.get("viewer");me = viewer.getData();var data = viewerData.getData();var appData = data[me.getId()];var div = document.getElementById('content_div');htmlout += "Spielerstatus: " + appData["Spielerstatus"] + "<br />";htmlout += "Spielstand: " + appData["Spielstand"] + "<br />";div.innerHTML = htmlout;}

- Besserer Kundenservice durch Social Media? [Infografik]
- Picozu: Photoshop-Klon im Browser-Fenster mit JavaScript, HTML5 und CSS3
- GIF me some mo'
- Liest Google meine E-Mails?
- Apple Newsstand - zu prüde für Penis-Cover
- Selection - Straßenatlas durch die deutsche Agenturlandschaft
- Safer Internet Day - Jugendliche besonders gefährdet
- Sind online Zahlungen sicher? [Infografik]
- Erfolgreich bloggen - Teil 2: Wordpress installieren
- Makaber: Steve Jobs macht Werbung für Android
- Twitter: 10.000 Tweets pro Sekunde beim Super Bowl
- Best of GGGGfunden
- Casual Friday - Siri, Big Bang und eine Welt ohne Strom
- Nach Twitter jetzt auch Blogger mit Zensur - internationale Blogging-Community adieu?
- Leiche auf Google Maps gefunden
- Facebook: Verbot für österreichische TV-Sender
- Battle of the Startup Bands - Gründer rocken die Hauptstadt
- Google, Twitter, Facebook, LinkedIn - Deine virtuellen Freunde [Infografik]
- Facebook-Börsengang: Zuckerberg legt Fakten auf den Tisch
- Twitter will Tweets länderspezifisch zensieren
- HTML5 vs Adobe Flash [Infografik]
- Facebook-Börsengang: erstmal tief stapeln
- „Marylin Monroe ausbuddeln“ - USA-Einreise wegen Scherz-Tweets verweigert
- GIF me some mo'
- Serie: Erfolgreich bloggen - Teil 1 "Thema identifizieren"
- Facebook- oder Google-Ads: Wo sind 100 Dollar besser angelegt? [Infografik]
- iPhone-Hacker Geohot verlässt Facebook
- Best of GGGGfunden
- Casual Friday - fünf Leute, eine Gitarre und Photobombing für Photoshop
- Eigentor auf Facebook für FC Bayern

































