2013-02-02 13 views
5

Stworzyłem lokalną aplikację do obsługi pojedynczych stron (strona internetowa z wbudowanym javascript do otwierania lokalnie w przeglądarce Chrome) i chcę mieć możliwość przesyłania i pobierania plików z mojego konta Dropbox. Szukałem rozwiązania, aby to zrobić za pomocą javascript, jednak mam już ślepy zaułek. Istnieje javascript Dropbox api (dropbox.js), ale wydaje się, że musisz go użyć z serwera WWW (do przekierowania przy użyciu Dropbox), co, jak sądzę, nie będzie działało na przekierowanie do lokalnego pliku html po uwierzytelnieniu.Przesyłanie plików do Dropbox za pomocą javascript dla aplikacji z jedną stroną?

Czy ktoś zrobił to, co próbuję zrobić, czy po prostu nie jest to możliwe? Jeśli nie z Dropbox, czy istnieje alternatywa (np. Dysk Google itp.)?

Dzięki.

Odpowiedz

2

Możesz zdecydowanie pracować z Google drive: https://developers.google.com/drive/quickstart-js. Jest również samoprzylepny plunker. Wierzę, że możesz także współpracować ze Skydrive poprzez JS api.

Nie jest w 100% pewny co do skrzynki referencyjnej, ale wykorzystuje OAuth 1 (uwierzytelnianie Dropbox jest zgodne ze specyfikacją OAuth v1 @https://www.dropbox.com/developers/core/authentication#python), a jej generalnie nie jest dobrym pomysłem użycie go z JS, ponieważ wymaga to ujawnienia aplikacji sekret. Twitter używa tego samego, a oni zabili swoje apki JS.

0

Możesz spróbować użyć jednego z lekkich lokalnych serwerów sieciowych, takich jak Bottle lub nawet Tornado. A następnie adres URL przekierowania będzie w rodzaju http://127.0.0.1:5000/.

5

To authenticate użycie client.authDriver(new Dropbox.Drivers.Popup()) (see here) zamiast przekierowania:

Sterownik ten może być przydatny w aplikacjach przeglądarek, które nie obsługują przekierowań peformed przez Dropbox.Drivers.Redirect. Ten sterownik pozwala uniknąć zmiany lokalizacji okna przeglądarki aplikacji przez pojawienie się osobnego okna i załadowanie strony autoryzacji Dropbox w tym oknie.

Powinieneś być w stanie read the file locally using a FileReader, a następnie write your file.


Aktualizacja: Tak, robisz. Zobacz Browser and Open-Source Applications:

wytyczne API

Dropbox zapytać, że klucz API i sekret nigdy nie jest narażony zwykłym tekstem. Jest to problem dla aplikacji, które używają dropbox.js po stronie klienta (aplikacje przeglądarki i rozszerzenia Chrome), jako oraz wszystkich aplikacji open-source.

Aby spełnić ten wymóg, encode your API key.

+0

Czy nadal muszę ujawnić kod aplikacji OAuth w kodzie? (A czy w tym przypadku jest tak źle czy w porządku?) – legoscia

+0

Wystarczająco fair, jeśli Dropbox sam to powie. Ale czy jest to bardziej bezpieczne niż umieszczanie klucza API i sekretu? Czy szyfrowany klucz nie jest "równoważnym tekstem"? – legoscia

+0

Ponieważ chcesz wykonać uwierzytelnianie lokalnie, nie ma możliwości obejścia go. Jeśli obawiasz się, że ktoś może ukraść twój klucz, musisz podać uwierzytelnienie na serwerze. Z drugiej strony, jeśli dostaną klucz, co by z nim zrobili? – laktak

Powiązane problemy