3

有没有一种方法可以在任何主要文件服务上获得沙盒、用户选择的目录访问权限,而无需首先获得对其整个文件系统的读取级别访问权限?

有很多关于“非托管”静态网络应用程序的讨论,它允许用户从第 3 方文件服务(Google Drive、Dropbox、他们自己的服务器等)访问他们的数据。到目前为止,我发现的最显着的努力是remoteStorage.io,但似乎没有任何主要提供商可以让用户选择一个目录,然后将其用作沙箱而不破坏他们的信任(即获取首先读取他们所有文件的权限)。

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

当前的解决方法似乎是让 webapp 提前强制使用特定的文件夹名称(“此应用程序想要访问 /appname_notes”),但这排除了让用户将其指向他们可能已经拥有笔记的位置。

有谁知道用 Google Drive、Dropbox 或类似工具来做这件事的好方法吗?

对我来说最有意义的用户体验是……

  1. 用户打开一个非托管的 web 应用程序(例如,一个基本的文本编辑器 TextyApp)。他们点击一个按钮来连接他们的数据。
  2. 出现第 3 方身份验证页面(例如,Google Drive)并显示“应用程序 TextyApp 已请求对您的文件进行读/写访问。请选择要使用的目录。”
  3. 确认屏幕:“为 TextyApp 授予对文件夹FunnyJokes的读/写访问权限?”
  4. 该页面重定向回 Web 应用程序,沙盒访问用户指定的文件夹和其中的文件。

这似乎是远程文件存储应该如何工作,但我还没有找到一种方法来做到这一点。任何想法/建议都会很棒!

干杯,亚当

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

4

2 回答 2

0

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

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

于 2015-06-09T16:09:41.097 回答
0

使用 remoteStorage,沙盒目录访问是当前应用程序请求(和用户授予)对存储的访问权限的默认方式。但是,用户不能在连接阶段手动选择或输入自定义目录。

于 2015-06-15T13:04:54.100 回答