OpenSocial: Verkrijgen en verwerken van data.

In dit artikel worden enkele JavaScript codefragmenten getoond. De codefragmenten geven de fundamentele bouwstenen voor het verkrijgen van de data van het socialenetwerk. Ook wordt getoond hoe data opgeslagen kan worden. Voorbeelden zijn gebaseerd op OpenSocial versie 0.7.

Expliciet aangeven welke data gewenst is

Normaal gesproken wordt er maar een beperkte set van datavelden teruggestuurd wanneer er gevraagd wordt om de gegevens van een persoon, denk aan naam en identificatienummer. Dit om belasting van de server en netwerk te beperken. Wanneer men toch meer gegevens wil ontvangen, dan moet dit expliciet in het request worden aangegeven.

Een voorbeeld van een array met extra datavelden staat hieronder:


var params = {};
params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS]=
[
opensocial.Name.Field.GIVEN_NAME,
opensocial.Person.Field.ADDRESSES,
opensocial.Person.Field.NICKNAME,
opensocial.Person.Field.THUMBNAIL_URL,
opensocial.Person.Field.GENDER,
opensocial.Person.Field.PROFILE_URL
];

Maken datarequest

Na het vullen van deze array wordt het daadwerkelijke datarequest gemaakt. Hierin wordt gevraagd om de gegevens van de VIEWER en OWNER van de applicatie. Merk op dat ook de variabele ‘params’ wordt meegegeven.

Dit request zal asynchroon worden uitgevoerd. De ontvangen data zal respectievelijk worden opgeslagen in ‘viewerData’ en ‘ownerData’. De programmeur mag hier natuurlijk elke gewenste ‘variabele naam’ voor kiezen. Wanneer de data wordt ontvangen, zal de JavaScript-functie ‘onLoadData’ aangeroepen worden, hierin moet de data verder verwerkt worden.
var req = opensocial.newDataRequest();


req.add(req.newFetchPersonRequest(
opensocial.DataRequest.PersonId.VIEWER,params
), 'viewerData');


req.add(req.newFetchPersonRequest(
opensocial.DataRequest.PersonId.OWNER,params
), 'ownerData');


req.send(onLoadData);

Callback-functie

In de onLoadData functie wordt de ontvangen data verwerkt. Ook is het bijvoorbeeld mogelijk om de naam van het sociale-netwerk op te vragen. In het onderstaande codefragment wordt getoond hoe de gegevens van de owner in een JavaScript variabele gezet kunnen worden en vervolgens wordt de URL van het profielplaatje van de owner (thumbnail) in een variabele gezet. Ook wordt gevraagd in welk environment de applicatie draait. Antwoorden hiervoor zijn bijvoorbeeld: hyves.nl en linkedin.com.

var owner = dataResponse.get('ownerData').getData();
var thumbnailUrl=owner.getField(opensocial.Person.Field.THUMBNAIL_URL);
var network=opensocial.getEnvironment().getDomain();

Persistentie API

Dit waren een aantal commando’s om de gegevens van een persoon op te vragen. OpenSocial kent echter ook een persistentie API, die het toestaat om bijvoorbeeld data op te slaan voor de viewer van de applicatie. Houdt wel rekening met eventuele beperkingen in verband met aangescherpte rechten (permissies). Roep onderstaande code bijvoorbeeld alleen aan als de VIEWER ook de OWNER van de applicatie is.

Het principe van request en asynchroon verwerken van data is hetzelfde. Gegevens kunnen worden opgeslagen in de vorm van een key-value-paar. Een voorbeeld van data opslaan voor de viewer van de applicatie staat hieronder. De gegevens die worden opgeslagen zijn: ‘score=12’. De callback functie die na het opslaan van de data wordt aangeroepen heet: dataSaved.

var req = opensocial.newDataRequest();
req.add(req.newUpdatePersonAppDataRequest("VIEWER","score","12"));
req.send(dataSaved);

Om deze gegevens weer terug op te vragen wordt het onderstaande request samengesteld. Hierin wordt expliciet om de ‘score’ gevraagd die is opgeslagen bij de OWNER. Het opslaan van de gegevens werd in bovenstaand voorbeeld immers alleen gedaan wanneer de VIEWER ook de OWNER was. De ontvangen gegevens worden opgeslagen in de variabele ‘ownerData’.

var fields=["score"];
req.add(req.newFetchPersonAppDataRequest("OWNER", fields),"ownerData");

In de callback-functie kunnen de gegevens van de OWNER nu op de onderstaande manier worden aangeroepen:

var data=dataResponse.get("ownerData").getData();

Vrienden uitnodigen

Een andere aardige request is het uitnodigen van vrienden voor de applicatie, zodat deze echt sociaal wordt en een viraal tintje krijgt. Vaak is dit request niet te automatiseren en moet de gebruiker van de applicatie toestemming geven, dit om spam zoveel mogelijk te voorkomen.

opensocial.requestShareApp("VIEWER", "Request");

Links