Onlangs kondigde Dropbox zijn nieuwe Datastore API en Drop-ins aan, een aantal fantastische nieuwe functies die erop gericht zijn om de kracht van toegang tot bestanden te gebruiken en (nu met Datastores) andere algemene informatie vanaf elk apparaat en die gegevens gesynchroniseerd over alle platforms, pijnloos te houden.
Tegenwoordig ondersteunt de Datastore API alleen use-cases voor één gebruiker, maar scenario's voor meerdere gebruikers zijn in de toekomst van Dropbox.
Laten we beginnen met bespreken welke datastores zijn. Je kunt ze zien als een kleine database om sleutel / waarde informatieparen bij te houden. U kunt nu zeggen dat uw toepassing een webservice met een database kan gebruiken en uw gegevens op alle apparaten hetzelfde zijn, en hoewel dit waar is, nemen we met behulp van de Datastore API de overhead weg van het verwerken van een back-up einde dienst.
Met dit in gedachten kunnen applicaties die geen grote hoeveelheid gebruikersgegevens hoeven te bewaren en geen zware verwerking vereisen, het databasebeheer delegeren aan Dropbox en vergeten om het handmatig te verwerken. Neem bijvoorbeeld een spel met meerdere platforms. Je zou de gebruiker willen toestaan om hem 's morgens op zijn iPad te spelen, aan het werk te gaan en terwijl hij in het verkeer is, door te spelen op zijn iPhone. In dit scenario zou u normaal gesproken die gebruiker nodig hebben om zich aan te melden bij het systeem, ze te spelen en vervolgens hun voortgang op te slaan.
Nu met de Datastore API kun je het hele aanmeldproces en de overhead van het verwerken van de voortgangsgegevens vergeten, je gebruikt gewoon de meegeleverde SDK en slaat de informatie op die je wilt opslaan, later die dag wanneer je gebruiker je applicatie opent vanuit een andere Dropbox verbonden apparaat kunt u eenvoudig hun informatie ophalen. In dit geval behandelt Dropbox de opslag, beveiliging en privacy van de informatie.
Hoewel vanaf nu de Datastore API alleen use-cases voor één gebruiker ondersteunt. Volgens Dropboxer Steve M. zijn scenario's voor meerdere gebruikers van plan voor Dropbox.
Als je ooit een JavaScript-framework / -bibliotheek hebt gebruikt en in voorbeeldtoepassingen bent gekomen, is de kans groot dat in een van die apps een TODO-app van een of andere vorm bestond. Dus, in de geest van het consistent houden van dingen en het demonstreren van enkele van de meest voorkomende functies, laten we een TODO-app bouwen met de Dropbox Datastore API.
Aangezien dit een tutorial is over de Dropbox-functionaliteiten die aan ontwikkelaars worden aangeboden, zal ik niet de HTML of de CSS in de applicatie uitleggen, je kunt die vinden in de bestanden bij deze tutorial.
Allereerst moeten we net als bij de meeste openbare API's een nieuwe applicatie binnen het systeem maken. Log hiervoor in op je Dropbox-account en ga naar de App Console. Klik op "Create app", kiezen "Dropbox API-app" en "Datastores alleen" en geef je app eindelijk een naam.
Je komt misschien in de verleiding om te selecteren "Bestanden en datastores", Als uw toepassing deze machtiging echter niet gebruikt, wordt deze bij het aanvragen van de productiestatus geweigerd, en houdt u zich aan het Dropbox-beleid voor elke toepassing die u maakt.
Nu heb je een nieuwe applicatie in Dropbox en kun je beginnen met het gebruik van de Datastore API (en andere bronnen). Om dit te doen, heeft u uw App-sleutel. Als u de JavaScript-SDK gebruikt, zoals we in deze zelfstudie zullen doen, heeft u uw App Secret (houd deze string geheim).
We gaan de JavaScript-SDK van Dropbox gebruiken voor interactie met de Datastore API. Om het te installeren, voegt u gewoon de volgende scriptverklaring toe aan uw HTML-document bovenstaande het script voor je applicatie.
Onze applicatie zal een enkel JavaScript-bestand zijn onder de "Js"
map. Maak een nieuw "App.js"
bestand met de volgende code:
var client = nieuwe Dropbox.Client (key: YOUR_DROPBOX_APP_KEY), TodosApp = TodosApp || todosList: null, init: function () , checkClient: function () , createTodo: function (e) , updateTodos: function () ; $ ('document') .ready (TodosApp.init);
Wat dit doet, is een nieuw Dropbox Client-object maken met de app-sleutel die is verkregen via de app-console. Vervolgens wordt het toepassingsobject gedefinieerd en wanneer alles gereed is, noemen we het in het
methode.
Het eerste wat onze applicatie moet doen, is controleren of we een toegangstoken hebben voor de gebruiker van onze applicatie. Voeg de volgende code toe aan de in het
methode:
client.authenticate (interactive: false, function (error, response) if (error) console.log ('OAuth-fout:' + fout);); TodosApp.checkClient ();
Hier proberen we de gebruiker van de app te verifiëren voor de Dropbox API-server. Door de interactieve
optie om vals
, we vragen de methode om de gebruiker niet door te sturen naar de Dropbox-site voor authenticatie, op deze manier kan onze applicatie de normale stroom voortzetten. We gaan de gebruiker er later handmatig naartoe sturen.
Nu moeten we controleren of de gebruiker is geverifieerd en zo ja, doorgaan met het laden van hun gegevens. Voeg de volgende code toe aan uw CheckClient
methode:
checkClient: function () if (client.isAuthenticated ()) $ ('# link-button') .fadeOut (); $ ('#main'). fadeIn (); else $ ('#main') .fadeOut ();
Hier werken we onze interface dienovereenkomstig bij, op basis van het feit of de gebruiker is geverifieerd of niet.
Tot nu toe hebben we onze applicatie-interface dienovereenkomstig bijgewerkt, als de gebruiker is geverifieerd of niet. Nu gaan we het proces van authenticatie van de gebruiker in het systeem afhandelen. Voeg de volgende code toe aan de anders
verklaring van de CheckClient
methode:
$ ('# link-knop') .klik (functie () client.authenticate (););
Dit is slechts een callback die wordt aangeroepen wanneer de gebruiker op de knop klikt "Connect Dropbox" knop in de interface. Merk op dat we niet de interactieve
optie deze keer, waardoor de omleiding mogelijk is. Als de gebruiker niet is aangemeld bij Dropbox, wordt een aanmeldingsformulier weergegeven en vraagt het systeem de gebruiker om de toepassing toe te staan.
Nadat de gebruiker toegang heeft gekregen tot de toepassing, wordt deze doorgestuurd naar ons. In dit geval is de oproep naar de isAuthenticated
methode zal true retourneren, op dit punt moeten we de opgeslagen Dropbox-gegevens van de gebruiker ophalen. Voeg de volgende code toe aan de als
verklaring van de CheckClient
methode:
client.getDatastoreManager (). openDefaultDatastore (function (error, Datastore) if (error) console.log ('Datastore error:' + error); todosList = Datastore.getTable ('todos'); TodosApp.updateTodos () ; Datastore.recordsChanged.addListener (TodosApp.updateTodos););
Deze methode haalt de Datastore van de geverifieerde gebruiker op en opent de todos
tafel. In tegenstelling tot een SQL-tabel hoeft de tabelstructuur niet voorafgaand aan gebruik te worden gedefinieerd, de tabel bestaat zelfs niet eens totdat we er gegevens aan toevoegen.
Wat dit ook betekent, is dat de tabel gegevens kan bevatten en dat één record niet dezelfde gegevens hoeft te bevatten als de andere. Het is echter een goede gewoonte om een vergelijkbare, zo niet dezelfde structuur, onder records te bewaren.
Op dit punt hebben we de gebruikersinformatie, maar deze wordt niet getoond aan de gebruiker. Voeg hiervoor de volgende code toe aan de updateTodos
methode:
var list = $ ('#todos'), records = todosList.query (); list.empty (); for (var i = 0; i < records.length; i++ ) var record = records[i], item = list.append( $( '