2013-02-02 8 views
5

Ho creato un'applicazione locale a pagina singola (pagina Web con javascript incorporato da aprire localmente con Chrome Browser) e mi piacerebbe poter caricare e scaricare file dal mio account Dropbox. Sono stato alla ricerca di una soluzione per farlo usando javascript, tuttavia, sono arrivato in un vicolo cieco. C'è un javascript Dropbox api (dropbox.js), ma sembra che tu debba usarlo da un server web (per il reindirizzamento dell'autenticazione Dropbox) che non penso possa funzionare per il reindirizzamento a un file html locale dopo l'autenticazione.Caricamento di file su Dropbox utilizzando javascript per un'applicazione per pagina singola?

Qualcuno ha fatto ciò che sto cercando di fare o non è fattibile? Se non con Dropbox, esiste un'alternativa (ad es. Google Drive, ecc.)?

Grazie.

risposta

2

Si può sicuramente lavorare con Google Drive: https://developers.google.com/drive/quickstart-js. C'è anche un plunker campione fluttuante. Credo che tu possa lavorare anche con Skydrive tramite JS api.

Non sicuro al 100% su Dropbox, ma utilizzano OAuth 1 (l'autenticazione Dropbox è conforme alle specifiche OAuth v1 @https://www.dropbox.com/developers/core/authentication#python) e generalmente non è una buona idea usarlo con JS, poiché richiede di esporre l'app segreto. Twitter usa lo stesso, e hanno ucciso la loro API JS.

0

È possibile provare a utilizzare uno dei server Web locali leggeri come Bottle o anche Tornado. E poi l'URL di reindirizzamento sarà una specie di http://127.0.0.1:5000/.

5

To authenticate uso client.authDriver(new Dropbox.Drivers.Popup()) (see here) invece di un redirect:

Questo driver può essere utile per applicazioni browser che non possono gestire i reindirizzamenti eseguiti dal Dropbox.Drivers.Redirect. Questo driver evita di modificare la posizione della finestra del browser dell'applicazione tramite spuntando una finestra separata e caricando la pagina dell'autorizzazione Dropbox in quella finestra.

Si dovrebbe essere in grado di read the file locally using a FileReader, quindi write your file.


Aggiornamento: Sì, lo fai. Vedi Browser and Open-Source Applications:

linee guida API

Il Dropbox chiedono che la chiave API e il segreto non è mai esposto in chiaro. Questo è un problema per le applicazioni che utilizzano dropbox.js sul lato client (app browser ed estensioni Chrome), come e tutte le applicazioni open-source.

Per soddisfare questo requisito, encode your API key.

+0

Ho ancora bisogno di esporre un'app di OAuth segreta nel codice? (Ed è male o va bene in questo caso?) – legoscia

+0

Abbastanza corretto, se Dropbox lo dice da sé. Ma è più sicuro che inserire la chiave API e il segreto? La chiave codificata non è solo "equivalente in testo normale"? – legoscia

+0

Dato che si desidera eseguire l'autenticazione localmente, non c'è modo di aggirarla. Se sei preoccupato che qualcuno possa rubare la tua chiave, dovrai eseguire l'autenticazione sul server. D'altra parte, se ricevono la tua chiave, cosa faranno con essa? – laktak

Problemi correlati