Cerca con Google

Translate

8 maggio 2015

Tutorial 10 (difficile) - Utilizzare Dropbox in MIT App Inventor - Parte 2


Prima parte

SECONDA PARTE: Autenticare la propria app Android per accedere a Dropbox

Creiamo un nuovo progetto MIT App Inventor (che per semplicità ho chiamato con lo stesso nome dato all'app in Dropbox)

Ovvero AIDropSync, ovviamente il nome può (e dovrebbe) essere scelto a piacere.



Aggiungiamo subito due componenti che ci serviranno in futuro:
  1. un Web Component per “comunicare” con Dropbox
  2. un TinyDB Component per memorizzare le password e i codici di accesso che otterremo in modo da non dover ripetere il processo di autenticazione ad ogni apertura della nostra app


Inseriamo anche un pulsante per avviare la procedura di autenticazione e una label “di debug” per seguire lo stato del processo.

Il layout, volutamente scarno, della nostra applicazione sarà il seguente:


Per effettuare l’autenticazione utilizzeremo la procedura descritta in questa pagina: https://blogs.dropbox.com/developers/2012/07/using-oauth-1-0-with-the-plaintext-signature-method/

Leggendo le istruzioni al link riportato, si evince che le chiavi utilizzate durante tutto il processo sono le seguenti: app key, app secret (che ci ha fornito Dropbox al passo precedente), request token, request token secret, access token, access token secret. Per semplicità memorizzerò ognuna, man mano che la otterrò, in una variabile globale:


Tanto per cominciare, poiché come anticipato il processo di autenticazione va effettuato una sola volta dopodiché i codici di accesso e le password possono essere archiviati e riutilizzati, facciamo in modo che all’avvio, l'applicazione verifichi se nel TinyDB sono presenti le chiavi già memorizzate, oppure se si deve provvedere ad una nuova autenticazione:


Se non ci sono chiavi memorizzare, alla pressione del tasto “Autenticazione” avviamo il processo di autenticazione vero e proprio. Il primo step è il seguente:


quindi:


(utilizziamo la variabile globale “step” in quanto per completare la procedura dovremo inviare due richieste di tipo “GET” al server di Dropbox e leggere per due volte la risposta. Al fine di riutilizzare lo stesso componente Web1, la variabile ci serve per definire a che punto del processo siamo arrivati. Sarà comunque più chiaro in seguito)

Ora dobbiamo intercettare la risposta del server di Dropbox. Esiste per questo l’apposito “blocco” 


Per capire qual è la struttura della risposta del server, possiamo visualizzarne i quattro elementi (url, responseCode, responseType, responseCount) grazie alla label di debug (lo faremo solo questa volta a titolo di esempio):


Lanciando l'app otteniamo il seguente risultato:

La prima cosa importante da notare è il responseCode che, essendo uguale a “200”, segnala che l'operazione è andata a buon fine. Varrebbe la pena di inserire qualche genere di controllo sul responseCode in modo da gestire eventuali failure del metodo ma non lo faremo in questa semplice app di esempio.

Ancora più importanti sono i due codici che vengono forniti nel responseContent e che sono rispettivamente quello che avevamo chiamato requestTokenSecret e requestToken.

Dobbiamo fare in modo che questi due codici vengano estratti dalla stringa di testo e registrati nelle due variabili globali che avevamo appositamente predisposto a questo scopo.
Per estrarre parti di una stringa contenuti tra una stringa di “inizio” e una di “fine” esistono vari modi. Ho trovato interessante l’approccio descritto in questo bell’articolo (http://www.imagnity.com/tutorials/app-inventor/web-component-json-response-on-app-inventor) e che ho solo leggermente modificato nella seguente procedura:


A questo punto non dovremo fare altro che richiamare questa procedura tutte le volte che dovremo estrarre dei codici dal “responseContent” di una risposta dal server Dropbox.

Tornando quindi all'evento GotText (ripulito dalle visualizzazioni di debug impiegate poco fa). Nel primo step del processo di autenticazione possiamo estrarre i codici che ci servono in questo modo:


Otterremo il seguente risultato:

Continua la lettura e procedi alla Terza Parte del Tutorial su Dropbox in MIT App Inventor...

Oppure rileggi la: Prima Parte

3 commenti:

  1. Trovo ottima l'idea di questo tutorial, tuttavia mi viene segnalato un errore nella composizione della lista relativa agli heathers: sono il solo o capita anche a qualcun altro?
    Saluti e grazie
    Leeboris

    RispondiElimina
  2. A me mi restituisce un errore 401 " Invalid OAuth request" anche se ho controllato 1000 volte ed è scritto tutto come nel tutorial.
    Non riesco a trovare nulla.
    Grazie
    Ciao

    RispondiElimina