2013-02-02 66 views
5

我創建了一個本地單頁面應用程序(嵌入式JavaScript的網頁,可以在Chrome瀏覽器本地打開),我希望能夠從我的Dropbox帳戶上傳和下載文件。我一直在尋找一種解決方案來使用JavaScript來做到這一點,但是,我已經走到了一個死衚衕。有一個JavaScript的Dropbox api(dropbox.js),但似乎你需要從一個Web服務器(用於Dropbox身份驗證重定向)使用它,我認爲這不會在驗證後用於重定向到本地html文件。使用JavaScript將文件上傳到Dropbox單頁應用程序?

任何人做什麼,我試圖做的,還是僅僅是不可行的?如果不是Dropbox,有沒有其他的選擇(例如Google Drive等)?

謝謝。

回答

2

你絕對可以與谷歌驅動器工作:https://developers.google.com/drive/quickstart-js。 還有一個浮動的樣本活動。我相信你也可以通過JS api與Skydrive一起工作。

對Dropbox不是100%確定,但他們使用OAuth 1(Dropbox身份驗證符合OAuth v1規範@https://www.dropbox.com/developers/core/authentication#python),並且將它與JS一起使用通常不是一個好主意,因爲它需要公開您的應用祕密。 Twitter使用相同的方式,並且他們殺死了他們的JS api。

0

您可以嘗試使用其中一個輕量級本地網絡服務器,如Bottle甚至Tornado。然後重定向URL將是一種http://127.0.0.1:5000/

5

To authenticate使用client.authDriver(new Dropbox.Drivers.Popup())see here),而不是重定向:

此驅動程序可用於不能處理 由Dropbox.Drivers.Redirect peformed的重定向瀏覽器應用。此驅動程序 避免了 改變應用程序的瀏覽器窗口的位置彈出一個單獨的窗口,在該窗口中加載Dropbox的授權 頁。

您應該能夠read the file locally using a FileReader,然後write your file


更新:是的,你這樣做。見Browser and Open-Source Applications

Dropbox的API準則要求,API密鑰和祕密永遠 明文暴露。這對於在客戶端(瀏覽器的應用程序和Chrome擴展)使用 dropbox.js應用程序的問題,因爲 以及所有開放源代碼的應用程序。

爲了滿足這一要求,encode your API key

+0

我是否還需要在代碼中公開OAuth應用程序密鑰? (在這種情況下,這是不好還是不錯?) – legoscia

+0

夠公平的,如果Dropbox自己說的話。但是,這比放入API密鑰和祕密更安全嗎?編碼密鑰不是「明文等效」嗎? – legoscia

+0

由於您想在本地進行身份驗證,因此無法解決此問題。如果您擔心有人會竊取您的密鑰,則需要在服務器上進行身份驗證。另一方面,如果他們拿到鑰匙,他們會怎麼做? – laktak

相關問題