Vrijblijvend gesprek

Graag eens vrijblijvend praten over hoe wij jou kunnen helpen met je project? Contacteer ons voor een afspraak

Contacteer ons

Dropbox wrapper class

Gezien wij bij SumoCoders zelf héél veel gebruik maken van Open Source projecten, dragen wij nu en dan ook graag ons eigen steentje bij. Hetzij in het meewerken aan een open-source PHP library en een open-source CMS, hetzij in het open-sourcen van losstaande classes.

Onlangs deed ik dit voor Dropbox. Dropbox is een online opslagdienst die het mogelijk maakt om via internet bestanden op te slaan en te synchroniseren op verschillende computers. Als je nog geen account heb dan kan dat via http://www.dropbox.com. Dropbox heeft ook een uitstekende REST API, waar mijn class gebruik van maakt. Hoe moet je hiervoor te werk gaan?

App aanmaken

Dropbox werkt met applicaties die toegang krijgen van de gebruiker. Om een applicatie aan te maken surf je naar: https://www.dropbox.com/developers/apps en maak je een nieuwe applicatie aan. Zodra je applicatie is aangemaakt kan je de bij de details de key en de de secret terugvinden. Noteer deze, we hebben die later nodig.

PHP applicatie maken

Nadat je de class hebt gedownload kan je echt aan de slag. Eerst moeten we een instantie aanmaken. Dit doe je door de constructor aan te roepen met de key en de secret van je applicatie.

<?php
// create instance
$dropbox = new Dropbox('<key>', '<secret>');
?>

Authenticatie

Om te communiceren met de API moeten de calls geautheniceerd zijn. Dit gebeurt volgens het oAuth-principe. Je moet dus tokens aanvragen. Dit doe je met de token()-methode. Hier geef je de gebruikersnaam en wachtwoord van jouw gebruiker (of de gebruiker waarmee je wenst te autheniceren) aan mee.

<?php
// create instance
$dropbox = new Dropbox('<key>', '<secret>');

// get the tokens
$response = $dropbox->token('<username>', '<pass>');

// output data
var_dump($response);
?>

Als je de correcte gegegevens gebruikt dan krijg je als antwoord een array met daarin 2 keys: token en secret. Het resultaat van deze calls kan je opslaan in je database. De authenticatie hoef je slecht 1 keer te doen, dus niet voor iedere call opnieuw.

File ophalen/wegschrijven

Hoogst waarschijnlijk wil je je files ophalen vanuit je Dropbox of wegschrijven naar Dropbox. Elke actie heeft zijn eigen methode. Om een file op te halen gebruik je filesGet() om ze weg te schrijven gebruik je filesPost().

Zoals je kan zien in onderstaande voorbeeld stel ik de waarde die we terugkregen van de token()-methode in.

<?php
// create instance
$dropbox = new Dropbox('<key>', '<secret>');

// set oauth-stuff (response data from token()-method)
$dropbox->setOAuthToken('<oauth_token>');
$dropbox->setOAuthTokenSecret('<oauth_secret>');

// get the file
$response = $dropbox->filesGet('path/to/file.png');

// set headers and output the file
header('Content-type: '. $response['content_type']);
echo base64_decode($response['data']);
exit;
?>

Een file wegschrijven gebeurt op een gelijkaardige manier.

<?php
// create instance
$dropbox = new Dropbox('<key>', '<secret>');

// set oauth-stuff
$dropbox->setOAuthToken('<oauth_token>');
$dropbox->setOAuthTokenSecret('<oauth_secret>');

// get the file
$response = $dropbox->filesPost('folder/where/the/file/will/be/stored', '/Users/tijs/Documents/file/to/upload.png');

// output response
var_dump($response);
?>

De uitgebreide documentatie van de Dropbox class vind je op http://classes.verkoyen.eu/dropbox/docs

Moest nog iets onduidelijk zijn mag je ons uiteraard altijd contacteren, zo kunnen ook wij onze documentatie hiervoor verbeteren.

Tijs Tijs schreef Dropbox wrapper class 1 jaar geleden. Dit artikel gaat over: , .

Reacties

Bart schreef 1 jaar geleden:

Nice, straks eens proberen!

pieter schreef 1 jaar geleden:

handig, wordt dit weekend uitgetest!

Reageer