2013-02-02 50 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

相关问题