Nylig har Dropbox kunngjort sin nye Datastore API og Drop-ins, et par flotte nye funksjoner som har til hensikt å utnytte kraften til å få tilgang til filer og (nå med Datastores) annen generell informasjon fra en hvilken som helst enhet og holde dataene synkronisert på alle plattformer, smertefritt.
I dag støtter Datastore API bare engangsbruk, men multi-user scenarier er i fremtidige planer for Dropbox.
La oss begynne med å diskutere hvilke datastore. Du kan tenke på dem som en liten database for å holde nøkkel / verdier par av informasjon. Nå kan du si at søknaden din kan bruke en webtjeneste med en database, og dataene dine vil være de samme på alle enheter, og mens dette er sant, bruker vi Datastore API, og tar bort overhead for å håndtere en back- slutt service.
Med dette i bakhodet, programmer som ikke trenger å lagre en stor mengde brukerdata og ikke krever tung behandling, kan delegere databasestyringen til Dropbox og glemme å håndtere det manuelt. Ta for eksempel et multi-plattformspill. Du vil gjerne tillate brukeren å spille den på iPad om morgenen, gå til jobb og i trafikken, fortsett å spille på iPhone. I dette scenariet vil du normalt ha den brukeren til å logge inn på systemet, spille, og deretter lagre deres fremgang.
Nå med Datastore API kan du glemme hele innloggingsprosessen og overhead for å håndtere fremdriftsdataene, du bruker bare den medfølgende SDK og lagrer informasjonen du vil lagre, senere den dagen når brukeren åpner programmet fra en annen Dropbox tilkoblet enhet, kan du enkelt hente informasjonen. I dette tilfellet håndterer Dropbox lagringen, sikkerheten og personvernet til informasjonen.
Selv om Datastore API bare støtter brukerbruker-saken, gjelder det nå. Ifølge Dropboxer Steve M. er multi-user scenarier i fremtidige planer for Dropbox.
Hvis du noen gang har brukt et JavaScript-rammeverk / bibliotek og kom over eksempelprogrammer, er det sjansene for at i en av disse appene var det en TODO-app av noe slag. Så, i en ånd for å holde ting konsekvent og å demonstrere noen av de vanligste funksjonene, la oss bygge en TODO-app ved hjelp av Dropbox Datastore API.
Siden dette er en veiledning om Dropbox-funksjonalitetene som tilbys til utviklere, skal jeg ikke forklare HTML eller CSS i programmet, du finner dem i filene som følger med denne opplæringen.
Først og fremst, som med de fleste offentlige APIer, må vi opprette en ny applikasjon i systemet. For å gjøre dette, logg inn på Dropbox-kontoen din og gå til App Console. Klikk på "Opprett app", å velge "Dropbox API-app" og "Bare datastore" og til slutt gi appen ditt et navn.
Du kan bli fristet til å velge "Filer og datastore", men hvis søknaden din ikke bruker denne tillatelsen, vil du bli nektet, når du ber om produksjonsstatus, i henhold til Dropbox-retningslinjene for hvert program du lager.
Nå har du en ny applikasjon i Dropbox, og du kan begynne å bruke Datastore API (og andre ressurser). For å gjøre dette, trenger du din App-nøkkel. Hvis du bruker JavaScript SDK, som vi vil i denne opplæringen, trenger du ikke din App Secret (hold denne strengen hemmelig).
Vi skal bruke JavaScript SDK levert av Dropbox for å samhandle med Datastore API. For å installere det, må du bare legge til følgende skriftdeklarasjon til HTML-dokumentet ovenfor Skriptet for søknaden din.
Vår søknad vil være en enkelt JavaScript-fil under "js"
mappe. Lage en ny "app.js"
fil med følgende kode:
var klient = ny Dropbox.Client (nøkkel: YOUR_DROPBOX_APP_KEY), TodosApp = TodosApp || todosList: null, init: function () , checkClient: function () , createTodo: funksjon (e) , updateTodos: function () ; $ ('dokument') .ready (TodosApp.init);
Hva dette gjør er å opprette et nytt Dropbox-klientobjekt ved hjelp av App-nøkkelen hentet fra appkonsollen. Det definerer deretter vårt programobjekt og når alt er klart, kaller vi i det
metode.
Det første som søknaden vår bør gjøre, er å se om vi har et tilgangstoken for brukeren av vår søknad. Legg til følgende kode i i det
metode:
client.authenticate (interactive: false, funksjon (feil, svar) if (error) console.log ('OAuth error:' + error);); TodosApp.checkClient ();
Her prøver vi å autentisere appens bruker til Dropbox API-serveren. Ved å sette inn interaktiv
alternativ til falsk
, Vi spør metoden om ikke å omdirigere brukeren til Dropbox-siden for godkjenning, slik at applikasjonen vår kan fortsette sin normale strømning. Vi skal manuelt sende brukeren det senere.
Nå må vi sjekke om brukeren er autentisert, og i så fall fortsett å laste inn dataene sine. Legg til følgende kode i din checkClient
metode:
checkClient: function () if (client.isAuthenticated ()) $ ('# link-button') .fadeOut (); $ ('#main') .fadeIn (); ellers $ ('#main') .fadeOut ();
Her oppdaterer vi grensesnittet vårt tilsvarende, basert på om brukeren har blitt godkjent eller ikke.
Så langt har vi vårt programgrensesnitt oppdatert tilsvarende, dersom brukeren er autentisert eller ikke. Nå skal vi håndtere prosessen med å autentisere brukeren i systemet. Legg til følgende kode i ellers
uttalelse av checkClient
metode:
$ ('# link-button') .click (funksjon () client.authenticate (););
Dette er bare en tilbakeringing som kalles når brukeren klikker på "Koble til Dropbox" knappen i grensesnittet. Legg merke til at vi ikke setter inn interaktiv
alternativ denne gangen, og dermed tillate omdirigering. Hvis brukeren ikke er logget inn i Dropbox, vil et innloggingsskjema bli vist, og systemet vil be brukeren om å tillate applikasjonen.
Når brukeren har fått tilgang til søknaden, vil den omdirigere tilbake til oss. I dette tilfellet er anropet til isAuthenticated
Metoden kommer tilbake sann, på dette tidspunktet må vi hente brukerens Dropbox lagrede data. Legg til følgende kode i hvis
uttalelse av checkClient
metode:
client.getDatastoreManager () .openDefaultDatastore (funksjon (feil, Datastore) if (error) console.log ('Datastore error:' + error); todosList = Datastore.getTable ('todos'); TodosApp.updateTodos ; Datastore.recordsChanged.addListener (TodosApp.updateTodos););
Denne metoden henter den godkjente brukerens Datastore og får tilgang til todos
bord. I motsetning til et SQL-tabell, må tabellstrukturen ikke defineres før bruk, faktisk eksisterer tabellen ikke en gang før vi legger til data for det.
Hva dette også betyr er at tabellen kan inneholde data, og en post trenger ikke å ha de samme dataene som de andre. Det er imidlertid en god praksis å bevare en lignende, om ikke lik struktur, blant poster.
På dette tidspunktet har vi brukerens todosinformasjon, men det vises ikke til brukeren. For å gjøre dette, bare legg til følgende kode til updateTodos
metode:
var list = $ ('#todos'), records = todosList.query (); list.empty (); for (var i = 0; i < records.length; i++ ) var record = records[i], item = list.append( $( '