有没有办法在没有首先获得对整个文件系统的读取级别访问权限的情况下,在任何主要文件服务上获得沙盒、用户选择的目录访问权限?
关于允许用户从第三方文件服务(Google Drive、Dropbox、他们自己的服务器等)访问数据的“非托管”静态网络应用有很多讨论。到目前为止,我发现的最值得注意的成果是 remoteStorage.io ,但任何主要提供商似乎都没有办法让用户选择一个目录,然后将其用作沙箱而不破坏他们的信任(即首先获得对所有文件的读取权限)。
从用户的角度来看,Web 应用程序不应访问远程文件存储上的任何其他内容,除了用户授予它访问权限的那个文件夹(例如,我可能会授予文本编辑器访问我的FunnyJokes 的权限 文件夹)。
当前的解决方法似乎是让 webapp 提前强制使用特定的文件夹名称(“此应用程序想要访问/appname_notes”),但这排除了让用户将其指向他们可能已经有笔记的位置.
有人知道使用 Google Drive、Dropbox 或类似工具执行此操作的好方法吗?
对我来说最有意义的用户体验是...
- 用户打开一个未托管的网络应用程序(例如,一个基本的文本编辑器 TextyApp)。他们点击一个按钮来连接他们的数据。
- 出现第 3 方授权页面(例如,Google 云端硬盘)并显示“应用 TextyApp 已请求对您的文件进行读/写访问。请选择要使用的目录。”
- 确认屏幕:“授予 TextyApp 对文件夹 FunnyJokes 的读/写权限?”
- 页面重定向回 web 应用程序,沙盒访问用户指定的文件夹及其中的文件。
这似乎是远程文件存储应该 的工作方式,但我还没有找到实现它的方法。 任何想法/建议都会很棒!
干杯, 亚当
编辑:为了澄清,我不是在谈论存储隐藏的“application data”,而是让用户指定一个特定的目录到沙箱,以供他们可能不想提供更广泛访问权限的网络应用程序使用。
最佳答案
Dropbox Apps API 提供了将任何使用您的 API key 的应用限制在您 Dropbox 帐户的单个目录中的功能。因此,用户可以创建一个可以访问特定目录的 API key ,然后将其插入到您的应用程序中。但是,这不是一个用户友好的工作流程。
我认为 Dropbox Drop-Ins Chooser/Saver API 可能接近您想要的。用户会看到一个 Dropbox 文件选择弹出窗口,您的应用只能访问用户选择的特定文件。
关于html - Google Drive/Dropbox API/RemoteStorage 应用程序的目录沙盒访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736664/