Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Dropbox e PHP: come integrarli

Come utilizzare le API di Dropbox per creare applicazioni in PHP. Creazione dell'account, generazione dell'app e utilizzo dell'SDK.
Come utilizzare le API di Dropbox per creare applicazioni in PHP. Creazione dell'account, generazione dell'app e utilizzo dell'SDK.
Link copiato negli appunti

Dropbox e il cloud computing

Dropbox è un’applicazione multi-piattaforma e multi-dispositivo che permette di fruire di un servizio basato sul cloud per l’archiviazione e la sincronizzazione di file attraverso la rete; installabile su tutti i sistemi operativi più diffusi per il Desktop (Linux, OS X e Windows) e per il mobile (Android e iOS), nonché utilizzabile sulla maggior parte dei device che supportano la connessione ad Internet (Pc, smartphone, tablet), il software è fruibile sia tramite un account gratuito sia attraverso differenti formule premium.

Grazie all'uso del protocollo SSL (Secure Sockets Layer), Dropbox è ritenuto una soluzione abbastanza sicura, compatibilmente con i limiti intrinseci ad una tecnologia come il cloud computing; gli sviluppatori potranno creare applicazioni in grado di interagire con esso attraverso della apposite API (Application Programming Interface), queste  interfacce permetteranno di eseguire operazioni di autenticazione, visualizzazione, caricamento e download dei contenuti.

Nel corso di questa trattazione verranno descritte delle soluzioni basate su PHP per l’interazione con le funzionalità del servizio.

Installazione e creazione di un account su Dropbox

L’applicazione client di Dropbox è scaricabile dal sito ufficiale del progetto e installarla è molto semplice. Su Windows sarà per esempio sufficiente un doppio click sull’eseguibile dell’installer scaricato per poi seguire la procedura guidata fino all’avvio del programma; per Linux sono invece disponibili pacchetti “.deb” (Ubuntu e Debian), “.rpm” (Fedora) nonché i sorgenti per la compilazione, in alternativa sarà possibile utilizzare il Terminale per inviare da linea di comando le istruzioni  necessarie sia  per le architetture a 32 bit:

$ cd ~ && wget -O - "https://www.Dropbox.com/download?plat=lnx.x86" | tar xzf -

 che per quelle a 64 bit:

$ cd ~ && wget -O - "https://www.Dropbox.com/download?plat=lnx.x86_64" | tar xzf -

Terminata l’installazione si potrà lanciare dalla cartella .Dropbox-dist appena generata il processo di Dropbox, cioè il demone denominato Dropboxd, attraverso il comando:

 $ ~/.Dropbox-dist/Dropboxd

Per gli utenti Mac viene fornito l’apposito pacchetto ".dmg", mentre gli utilizzatori di dispositivi basati su iOS e Android potranno scaricare la relativa App mobile dai rispettivi store.

Per poter utilizzare il software sarà necessario possedere un account registrato sul servizio, per cui si dovrà attivarne uno sulla pagina d’iscrizione; fatto questo l’applicazione sarà completamente operativa e l’accesso alle funzionalità per la memorizzazione, la sincronizzazione e la condivisione dei contenuti saranno accessibili attraverso un’apposita cartella (omonima del programma come impostazione predefinita) all’interno della quale effettuare l’upload di tutti i file che si intende affidare al cloud di Dropbox:

Al primo collegamento la cartella conterrà due sub-directory: Photos e Public, destinate rispettivamente alla condivisione di immagini tramite galleria on-line e di file attraverso appositi collegamenti ipertestuali.

Sarà poi possibile aggiungere ulteriori cartelle (come “docs” nell’immagine precedente) nelle quali uploadare file con l’unico limite dato dallo spazio disponibile.

I contenuti della cartella per la sincronizzazione saranno gli elementi con i quali interagirà l’applicazione PHP che verrà descritta nel corso dell’articolo.

Creazione di una nuova App

Dropbox mette a disposizione delle App key che permetteranno alle applicazioni di autenticarsi presso il servizio interagendo con le sue API, un sistema basato su delle credenziali di accesso largamente utilizzato da numerose altre piattaforme aperte agli sviluppatori come, per esempio, PayPal e Twitter; per poter ottenere queste chiavi, sarà necessario innanzitutto autenticarsi con i dati del proprio account, per poi raggiungere la voce di menu My Apps sulla sezione del sito Dropbox dedicata agli sviluppatori.

Fatto questo, il passaggio successivo richiederà di cliccare sul pulsante denominato Create an App in modo da accedere ad un modulo, esso consentirà di comunicare alcune semplici informazioni riguardanti l’applicazione, come nell’esempio proposto dall’immagine successiva:

 

Di particolare importanza è la sezione Access level del form nella quale saranno disponibili due radiobutton associati alle voci App folder e Full Dropbox. Selezionando la prima (che è poi la modalità consigliata dagli sviluppatori del servizio), l’applicazione avrà la possibilità di accedere ad una sandbox presente all’interno della directory di Dropbox; la seconda permetterà invece alla App di accedere a tutta la cartella di sincronizzazione.

Una volta effettuata la scelta più adatta per le proprie esigenze di sviluppo, l’applicazione sarà finalmente creata e il sistema fornirà le App key ad essa associate:

Le chiavi fornite saranno rappresentate da due stringhe alfanumeriche, la prima (App Key) fungerà da identificatore univoco per l’App, la seconda (App secret) funzionerà come credenziale per il riconoscimento da parte del servizio.

Da notare che alla App appena generata sarà associato lo status denominato “Development”, essa quindi  potrà essere utilizzata esclusivamente in fase di sviluppo, per passare all’ambito di produzione bisognerà effettuare un’apposita richiesta cliccando sul collegamento Apply for production status, ma prima di far questo sarà necessario effettuare il test della propria applicazione.

Al di sotto del modulo in cui sono presenti le informazioni relative alla App, è presente un riferimento agli utilizzatori addizionali con i quali sarà possibile effettuare i test precedenti il deployment; cliccando sul link situato all’interno del box il sistema renderà visibile una notifica in cui verrà ricordato che l’applicazione non potrà essere disponibile pubblicamente prima della richiesta di passaggio alla fase di produzione

 

L’ultimo modulo disponibile è quello relativo alle informazioni aggiuntive sul progetto, in esso sarà possibile indicare un sito Web di riferimento per lo sviluppatore, modificare la descrizione precedentemente digitata, comunicare il nome dell’autore e associare all’applicazione delle icone in tre diversi formati; da segnalare la presenza a fondo pagina del collegamento denominato Delete app che permetterà di cancellare tutte le operazioni precedentemente effettuate.

Cliccando sul pulsante Update saranno confermate tutte le modifiche apportate nella sezione dedicata alle opzioni, quindi, ritornando nella sezione My Apps il nome dell’applicazione creata comparirà come voce nell’apposito elenco:

API ed SDK: Dropbox PHP

Per semplificare il lavoro degli sviluppatori, Dropbox mette a disposizione numerosi SDK (Software Development Kit) importabili negli ambienti di sviluppo per velocizzare le fasi relative alla realizzazione delle App; tali SDK forniscono delle librerie specifiche per le varie piattaforme supportate che hanno il compito di incapsulare le chiamate verso le API del servizio effettuate tramite protocollo HTTP.

Dropbox mette a disposizione SDK propri per le piattaforme iOS, Android e OS X nonché per i linguaggi di programmazione Java, Ruby e Python; per PHP è invece disponibile un SDK di terze parti scaricabile dal servizio per il controllo di versione GitHub che prende semplicemente il nome di “Dropbox”.

Tale strumento viene rilasciato sotto licenza MIT (è quindi utilizzabile liberamente in quanto open source) e potrà essere scaricato gratuitamente per l’integrazione nei propri progetti; si tratta in pratica di un kit di sviluppo, appositamente studiato per l’accesso alle REST API, che per funzionare necessita di un ambiente basato su PHP 5.3 o superiore.

Dato che sarà questo lo strumento che verrà utilizzato nel corso della trattazione per la realizzazione di un’App Dropbox, prima di utilizzarlo bisognerà verificare la disponibilità dei requisiti minimi richiesti che, oltre alla versione di PHP precedentemente citata, dovranno essere:

  • l’estensione cURL di PHP, essa consentirà di utilizzare la libreria libcurl per la connessione e l’interscambio dei dati con il server;
  • l’estensione MyCript di PHP che metterà a disposizione un’interfaccia per l’omonima libreria crittografica;
  • l’estensione PHP PDO (PHP Data Objects) che fornirà l’interfaccia per l’accesso alle basi di dati.

L’attivazione o meno delle estensioni elencate nel proprio ambiente di sviluppo potrà essere verificata attraverso la consultazione della sezione PHPExt del file PHP.ini.

Conclusioni

In questa prima parte della trattazione dedicata alla realizzazione di un’applicazione PHP in grado di interagire con Dropbox sono state descritte le caratteristiche relative al noto servizio per l’archiviazione e la sincronizzazione nonché introdotto il discorso riguardante le API REST disponibili per gli sviluppatori.

Inoltre, sono state esposte le procedure necessarie alla generazione di un primo progetto e presentato un SDK che verrà utilizzato per la creazione della App.

Nella prossima parte verranno illustrate le procedure di configurazione e le implementazioni richieste per il completamento di un’applicazione funzionante.

 Una volta definita un’App tramite l’interfaccia per gli sviluppatori di Dropbox e scelto l’SDK con il quale lavorare sulla propria applicazione, le fasi più importanti per il funzionamento di quest’ultima saranno sicuramente quelle relative all'autenticazione e all'autorizzazione.

Per tale motivo questa seconda parte sarà dedicata alla configurazione dell’App per il suo riconoscimento da parte del servizio con conseguente accesso alle risorse riservate.

Dropbox e oAuth come protocollo per l’autenticazione

Il sistema di autenticazione adottato da Dropbox è conforme alla prima versione delle specifiche di oAuth, un protocollo aperto che permette di effettuare autorizzazioni sicure sulla base di un metodo standard utilizzabile sia nelle applicazioni Web che in quelle desktop e mobile; oAuth si presenta quindi come un strumento grazie al quale applicazioni di terze parti avranno la possibilità di accedere a servizi forniti tramite protocollo HTTP.

Il meccanismo alla base del funzionamento di oAuth potrebbe apparire complesso, in realtà esso consente l'autenticazione e l'autorizzazione sicura delle API necessarie per l'accesso ad una risorsa riservata senza la necessità di effettuare alcuna trasmissione di username e password.

Tale protocollo identifica le applicazioni come consumers richiedenti protected resources accessibili tramite un service provider, ciascun consumer utilizzerà per questo scopo un'API; in pratica, oAuth utilizzerà dei dispositivi virtuali di sicurezza (tokens) che il provider fornirà per comunicare le autorizzazioni relative ai consumers; questi dispositivi si distinguono in request tokens e access tokens, i primi verranno utilizzati nella formulazione delle richiesta di accesso, i secondi per l’accesso ai contenuti attraverso il provider.

Configurare un’applicazione basata su Dropbox PHP

Quando si definisce un’App nell'apposita sezione del sito di Dropbox per gli sviluppatori e si sceglie di utilizzare la modalità di accesso “App Folder”, la cartella sandbox in cui memorizzare le applicazioni create non viene generata automaticamente, essa sarà invece disponibile al momento della prima interazione tra client e servizio.

A questo scopo, la libreria Dropbox PHP mette a disposizione un’applicazione già pronta, contenuta nella cartella /examples, che dovrà essere configurata in modo che possa autenticarsi su Dropbox e comunicare con le API necessarie per l’utilizzo delle sue funzionalità; i parametri da impostare sono contenuti nel file denominato bootstrap.php che presenta una sezione dedicata alle consumer key, cioè alle chiavi di accesso associate all’App definita; in questa sezione i valori d’esempio relativi alle variabili $key e $secret (righe 30 e 31) dovranno essere sostituiti rispettivamente con la Key API e la Key secret precedentemente comunicate dal servizio, come nell’esempio seguente

// Set your consumer key, secret and callback URL
$key = 'e3uxxxxxxxxorv';
$secret = 'an4xxxxxxxxwq7';

Fatto questo, sarà possibile scegliere due diverse modalità per l’archiviazione dei tokens per la sicurezza, quella che consentirà il loro salvataggio in un’apposita cartella (filesystem store) e quella che prevede la memorizzazione nella tabella di un database; nel caso della presente trattazione è stata scelta la seconda modalità per una consultazione più semplice delle informazioni scambiate tra client e piattaforma.

Il file bootstrap.php fornisce un’apposita sezione per l’interazione con i database: decommentando la riga 52 si permetterà l’istanza dell’oggetto di classe per la connessione con le basi di dati e l’archiviazione nella relativa tabella; decommentando invece la riga 53, si potranno indicare le credenziali relative all’host del database, al nome scelto per l’archivio, allo username utilizzato in connessione e alla password ad esso associata; l’ultimo parametro modificabile sarà quello destinato a contenere l’informazione relativa alla “porta d’ascolto” del DBMS ma, in assenza di configurazioni personalizzate, è possibile lasciare invariato il numero predefinito (3306)

//$storage = new DropboxOAuthStoragePDO($encrypter, $userID);
//$storage->connect('localhost', 'dropbox', 'username', 'password', 3306);

Effettuata quest’ultima impostazione, si potranno salvare le modifiche e procedere con la creazione del database che, nel caso dell’esempio corrente, sarà una base di dati MySQL chiamata semplicemente “dropbox”; l’unica tabella del database (oAuth_tokens) conterrà tre campi:

  1. uid: l’identificatore univoco autoincrementale associato ad ogni record archiviato;
  2. userID: l’identificatore dell’utente in connessione con il servizio;
  3. token: la stringa che compone il token di sicurezza per l’autenticazione con le API di Dropbox.

Le istruzioni necessarie per la creazione di tale tabella sono contenute in un file SQL (oAuth_tokens.sql) contenuto nella cartella /examples che potrà essere importato, le istruzioni previste sono comunque riportate di seguito per un rapido copia e incolla:

CREATE TABLE IF NOT EXISTS `oAuth_tokens` (
  `uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userID` int(10) unsigned NOT NULL,
  `token` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`uid`),
  UNIQUE KEY `userID` (`userID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;[/

Una volta creata la tabella all’interno del database, si potrà passare alla fase dell’autenticazione per verificare l’efficacia dei parametri di configurazione.

Autenticazione dell’applicazione su Dropbox

 Come impostazione predefinita, la tabella “oauth_tokens” risulterà vuota e nella directory di Dropbox non sarà presente alcuna sandbox dedicata alle Apps, questo perché l’applicazione non ha ancora effettuato alcuna connessione con il servizio e non è stata ancora superata alcuna fase di autenticazione.

Nella sotto-cartella /examples di Dropbox PHP (la cui cartella principale è stata rinominata per semplicità come dropbox in questa trattazione) sono contenuti diversi file destinati a richiamare le API della piattaforma per eseguire operazioni di visualizzazione e manipolazione dei contenuti; si prenda per esempio il file accountInfo.php, esso ha il compito di recuperare le informazioni relative all’account di un utente autenticato tramite un’invocazione del metodo accountInfo(); richiamandolo tramite la barra degli indirizzi del browser l’URL:

http://www.miosito.it/dropbox/examples/accountInfo.php

Il servizio darà il via alla fase denominata API Request Authorization e l’URL prodotto dal sistema di autenticazione sarà simile al seguente:

https://www.dropbox.com/1/oauth/authorize?oauth_token=qr9xxxxxxxxoti&oauth_token_secret=8nlxxxxxxxx6p75&oauth_callback=http%3A%2F%2Fmiosito%2Fdropbox%2Fexamples%2FaccountInfo.php

In questa fase della procedura il consumer invia tramite metodo una richiesta all'URL messo a disposizione dal provider del servizio, quest’ultimo avrà l’onere di verificare la firma e la key del consumer; in caso di esito positivo verrà generato un request token e un token secret che verranno inviati come risposta alla richiesta tramite protocollo HTTP.

L’URL generata richiamerà una pagina come la seguente:

Connessione dell'App a Dropbox

Clickando su Allow si permetterà all’applicazione di effettuare una connessione con il servizio, l’URL per la chiamata alla pagina che eseguirà il codice sergente contenuto in accountInfo.php sarà simile alla seguente:

http://www.miosito.it/dropbox/examples/accountInfo.php?uid=7xxxxxx4&oauth_token=ooxxxxxxxx1p

Ora la procedura di autenticazione prevederà l’autorizzazione dell’utente, ciò avverrà attraverso una richiesta formulata dal consumer al provider del servizio via query string prodotta tramite metodo HTTP; tale richiesta verrà utilizzata in primo luogo per identificare l’utente, quindi, un’eventuale verifica conclusasi positivamente porterà il provider a mettere a disposizione le risorse desiderate che potranno essere accettate o meno dall'utente.

Il dato relativo alla conclusione, positiva o negativa che sia, di questa fase, verrà trasmesso al consumer il cui compito sarà quello di accertarsi che l’account che l’ha portata a termine corrisponda con l’utente che ha effettuato la richiesta.

Solo ora entrerà effettivamente in gioco oAuth, la procedura di autenticazione proseguirà infatti rimpiazzando il token prodotto nel corso della richiesta con il token di accesso; l’access token entrerà a far parte delle informazioni passate al vaglio del provider (ivi compreso il secret token) che, in caso di esito positivo, consentirà l’accesso alle risorse riservate.

Un volta conclusa la procedura prevista per l’autenticazione e l’autorizzazione, l’applicazione potrà essere eseguita; nel caso specifico del file accountInfo.php dell’esempio corrente, essa mostrerà il contenuto di un array che raccoglie tutte le informazioni relative all’account di riferimento; la operazioni descritte in precedenza potranno essere ripetute per tutti gli altri file della cartella /examples di Dropbox PHP per le funzionalità di manipolazione dei contenuti presenti nell’App folder.

Esecuzione del file accountInfo.php

Un segno tangibile dell’avvenuta autenticazione sarà la creazione della cartella sandbox (denominata Apps) per il test delle applicazioni all'interno della directory personale di Dropbox, essa verrà infatti generata automaticamente al momento dell’autorizzazione e presenterà al suo interno una sotto-cartella che prenderà il nome dell’applicazione su cui si sta operando, ad esempio “Prima App Dropbox”.

Un ulteriore testimonianza dell’esito positivo della procedura precedentemente effettuata sarà la popolazione della tabella oAuth_tokens.sql tramite un primo record:

Memorizzazione del Token in tabella

Da notare la registrazione del token nell’apposito campo, esso è il frutto dell’elaborazione della richiesta di connessione da parte dell’applicazione alla API di Dropbox

Conclusioni

In questa seconda parte della trattazione dedicata all'interazione delle applicazioni PHP con il servizio cloud per la sincronizzazione e lo storage remoto Dropbox, sono state descritte le procedure necessarie per l’autorizzazione di un’App basata sull’SDK Dropbox PHP tramite il protocollo aperto oAuth; esso consentirà ad un utente che utilizza l’applicazione di accedere ai dati relativi ad un account e ai file messi a disposizione da quest’ultimo attraverso una propria directory attiva sul servizio.

 

Ti consigliamo anche