Google Drive / Dropbox API / RemoteStorage 应用程序的目录沙盒访问?

Directory sandboxed access for Google Drive / Dropbox API / RemoteStorage apps?

有没有办法在没有首先获得对整个文件系统的读取级别访问权限的情况下,在任何主要文件服务上获得沙盒、用户selected 目录访问权限?

关于 "unhosted" 允许用户从第 3 方文件服务(Google Drive、Dropbox、他们自己的服务器等)访问数据的静态 Web 应用程序有很多讨论。到目前为止,我发现的最值得注意的努力是 remoteStorage.io,但似乎没有任何主要提供商可以让用户 select 目录然后将其用作沙箱而无需打破他们的信任(即首先获得对他们所有文件的读取权限)。

从用户的角度来看,webapp 不应该访问远程文件存储上的任何其他内容,除了用户授予它访问权限的一个文件夹(例如,我可能授予文本编辑器访问我的 FunnyJokes 文件夹)。

当前的解决方法似乎是让 webapp 提前强制使用特定的文件夹名称 ("this app wants access to /appname_notes"),但这排除了让用户将其指向他们可能已经有笔记的位置。

有人知道使用 Google Drive、Dropbox 或类似工具执行此操作的好方法吗?

对我来说最有意义的用户体验类似于...

  1. 用户打开了一个未托管的网络应用程序(例如,一个基本的文本编辑器 TextyApp)。他们单击一个按钮来连接他们的数据。
  2. 出现第 3 方授权页面(例如,Google 驱动器)并显示 "The app TextyApp has requested read/write access to your files. Please select a directory to use."
  3. 确认屏幕:"Grant read/write access to folder FunnyJokes for TextyApp?"
  4. 页面重定向回 web 应用程序,沙盒访问用户指定的文件夹和其中的文件。

这似乎是远程文件存储应该的工作方式,但我还没有找到实现它的方法。 任何 thoughts/suggestions 都会很棒!

干杯, 亚当

编辑:为了澄清,我不是在谈论存储隐藏的“application data”,而是让用户指定一个特定的目录到沙箱,以便与他们可能不想提供更广泛的网络应用程序一起使用访问。

Dropbox 应用程序 API 能够将使用您的 API 密钥的任何应用程序限制在您 Dropbox 帐户的单个目录中。因此,用户可以创建一个可以访问特定目录的 API 密钥,然后将其插入您的应用程序。但是,这不是一个用户友好的工作流程。

我认为 Dropbox Drop-Ins Chooser/Saver API 可能接近您的要求。用户会看到一个 Dropbox 文件选择弹出窗口,您的应用只能访问用户选择的特定文件。

对于 remoteStorage,沙盒目录访问目前是应用程序请求(以及用户授予)存储访问权限的默认方式。但是,用户无法在连接阶段手动 select 或输入自定义目录。