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

Posted

技术标签:

【中文标题】Google Drive / Dropbox API / RemoteStorage 应用程序的目录沙盒访问?【英文标题】:Directory sandboxed access for Google Drive / Dropbox API / RemoteStorage apps? 【发布时间】:2015-06-09 15:37:02 【问题描述】:

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

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

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

目前的解决方法似乎是让 webapp 提前强制一个特定的文件夹名称(“这个应用程序想要访问 /appname_notes”),但这排除了让用户指向他们可能已经有笔记的地方.

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

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

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

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

干杯, 亚当

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

同样,Drive 支持 Drive.File 范围,它只允许访问用户选择的特定文件。 因此得到的建议是:1. 要求用户在 Drive/Dropbox 中选择一个文件夹,以及 2. 再次要求仅对用户指定的文件夹进行沙盒访问。两个不同的范围会导致问题吗?您可以使用 Drive API 将单个文件夹指定为根目录吗? @AdamKumpf 这听起来不像我的建议。你看过 Dropbox 选择器/保护程序 API 吗?这对你不起作用吗? 嗨@mbaird - Drop-Ins Chooser/Saver 似乎不允许您指定文件夹,只能指定单个文件。我在那里错过了什么吗?我正在寻找一种方法让用户选择一个文件夹,然后让 webapp 仅获得对该文件夹的读/写访问权限(确保用户只能更改所选目录中的文件)。编辑:我想一次只有一个文件okay,但我希望有一个目录级的解决方案。 :) Dropbox API 提供的权限记录在这里:dropbox.com/developers/reference/devguide#app-permissions 听起来“应用文件夹”权限最接近您要查找的权限,但这会导致创建一个新文件夹对于应用程序,并且不允许用户选择任意/预先存在的文件夹。 (不过,我们会认为这是一个功能请求。)【参考方案2】:

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

【讨论】:

顺便说一句,有更多业力的人可以用“remotestorage”标记这个问题吗?如果业力较小的人也可以将其用作标签,并且我们可以从 remoteStorage 网站链接到 SO 上的标签,那就太好了。谢谢! :)

以上是关于Google Drive / Dropbox API / RemoteStorage 应用程序的目录沙盒访问?的主要内容,如果未能解决你的问题,请参考以下文章

在 android app 中访问 Dropbox、google drive、microsoft onedrive 等中的云共享文件

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

iOS 11 Files 应用程序 - Google Drive 大文件导入问题

Google Drive 作为 FTP 服务器

使用 Google Drive Directory 作为 Apache 虚拟主机

如何使用 AngularJS 将文件上传到 Google Drive