Dezember 2008
OpenSocial – Persistenz und Kommunikation
Fortsetzung, Teil 2
Hinweis:
Sofern die Daten in irgendeiner Weise weiterverwendet werden sollen, muss in jedem Fall beachtet werden, dass gespeicherte Daten in OpenSocial-Applikationen stets als String verarbeitet und zurückgeliefert werden. OpenSocial führt auch automatisch ein HTML-Escaping durch. Um solche Daten also wie ursprünglich verarbeiten zu können, muss das Escaping rückgängig gemacht werden:
var unescapedString =
gadgets.util.unescapeString(jsondata);
var obj = gadgets.json.parse(unescapedString);
Solche angelegten Daten können natürlich auch wieder komplett gelöscht werden. Der Wert alleine kann beispielsweise einfach "genullt" werden. Um nun allerdings auch den Schlüssel, also in dem Sinne den gesamten Datensatz zu löschen, gibt es den RemovePersonAppDataRequest. Diesem werden die zu löschenden Felder sowie, wie gehabt, ein entsprechender Viewer mitgegeben. Listing 4 – Applikationsdaten per Angabe der Felder löschen:
function removeAppData() {var req = opensocial.newDataRequest();req.add(req.newRemovePersonAppDataRequest("VIEWER", ["Spielerstatus ", " Spielstand "]),"clear_data");req.send(handleRemoveAppData);}
Während der Entwicklung einer Applikation kann es manchmal hilfreich sein, sämtliche durch die Applikation gespeicherte Daten zu löschen. Listing 5 zeigt, wie es geht:
function removeAllAppData() {var req = opensocial.newDataRequest();req.add(req.newRemovePersonAppDataRequest("VIEWER", "*"), "clear_data");req.send(handleRemoveAllAppData);}
Kommunikation
Manchmal ist es wichtig, Daten mit einem eigenen Server auszutauschen. Dazu gibt es eine entsprechende Methode makeRequest in der Gadgets-API. Bevor allerdings diese Methode aufgerufen wird, muss ein entsprechender Content-Type festgelegt werden. Unterstützt werden aktuell die Typen DOM (DOM-Objekt), FEED (JSON-Repräsentation eines RSS- oder ATOM-Feeds), JSON (JSON-Objekt) und Text (Textdaten). Sie sind in der Enumeration gadgets.io.ContentType aufgeführt. Listing 6 zeigt eine entsprechende Funktion zur Durchführung eines Requests:
function requestUrl(url, contentType, callbackFunction) {var params = {};params[gadgets.io.RequestParameters.CONTENT_TYPE] = contentType;gadgets.io.makeRequest(url, callbackFunction, params);}
Dieser requestUrl-Funktion wird neben einer URL und dem Content-Type auch direkt eine Callback-Funktion übergeben, die die empfangenen Daten verarbeiten soll. Sollen beispielsweise Daten von einer URL abgerufen werden, die diese als JSON-Objekt zurückgibt, lässt sich dies wie in Listing 7 gezeigt realisieren:
var receivedData;function onUrlRequested(data) {if (data.data && data.data.length) {receivedData = data.data;}}requestUrl("http://www.meineUrl.de/meineDaten",gadgets.io.ContentType.JSON,onUrlRequested);
Die empfangenen Daten befinden sich nach dem Durchlauf in der Variablen receivedData und können beliebig weiterverarbeitet werden. Sollen nun Daten an den Server übergeben werden, geht dies leider nur per GET-Parameter, POST wird aktuell noch nicht unterstützt.
OpenSocial – Aktivitäten
Im nächsten Teil (Teil 6) geht es weiter mit den Aktivitätsdaten von OpenSocial. In Teil 7 erfolgt dann eine Einführung in die REST-Schnittstelle. Ein Seitenwechsel wird im achten und letzten Teil der Serie vollzogen: Hier soll gezeigt werden, wie ein OpenSocial-Container erstellt wird, der eigene Applikationen hosten kann. Anregungen, Fragen und Kritik werden in Form von Kommentaren gerne entgegengenommen und beantwortet.
Der komplette Quellcode des oben beschriebenem Beispiels kann hier heruntergeladen werden.
André Wussow ist Fachautor und Trainer mit Schwerpunkt auf Webtechnologien und mobilen Lösungen. Sein aktuelles Buch über sichere Webanwendungen (entwickler.press) erhalten Sie im Handel.

- Open Social – Social Gadgets
- Open Social – Google Gadgets detailiert
- OpenSocial – Google Gadget API
- OpenSocial – eine Einführung


























