Oauth 从有文件夹限制的应用程序(如Dropbox)使用Google Drive

Oauth 从有文件夹限制的应用程序(如Dropbox)使用Google Drive,oauth,directory,permissions,google-drive-api,dropbox,Oauth,Directory,Permissions,Google Drive Api,Dropbox,当我通过Dropbox登录应用程序时,它会显示: ABC希望访问自己的文件夹Apps›ABC(emphasis mine) 这意味着,应用程序ABC只能访问其文件夹 但是,此文件夹通常在Dropbox目录中可见并已同步 有没有一种方法可以通过Google Drive实现这一点?似乎使用特定于应用程序的数据功能会阻止用户以除应用程序以外的任何方式使用目录。授予使用整个谷歌硬盘的权限会给应用程序太多的权限。Dropbox很好地实现了这一功能。有没有办法用Google Drive以这种方式执行启动过程

当我通过Dropbox登录应用程序时,它会显示:

ABC希望访问自己的文件夹Apps›ABC(emphasis mine)

这意味着,应用程序ABC只能访问其文件夹

但是,此文件夹通常在Dropbox目录中可见并已同步

有没有一种方法可以通过Google Drive实现这一点?似乎使用特定于应用程序的数据功能会阻止用户以除应用程序以外的任何方式使用目录。授予使用整个谷歌硬盘的权限会给应用程序太多的权限。Dropbox很好地实现了这一功能。有没有办法用Google Drive以这种方式执行启动过程?

当您的ABC应用程序代表用户调用Google Drive API时,您将使用oAuth授权ABC。从驱动器API v3文档:

OAuth 2.0的授权过程或流程的细节有所不同 取决于您编写的应用程序类型。以下一般过程 适用于所有应用程序类型:

  • 当您的应用程序需要访问用户数据时,它会向Google请求 访问的特定范围
  • 谷歌将向用户显示一个同意屏幕 用户,要求他们授权您的应用程序请求 他们的数据
Google Drive的资源授权方案包括许多“许可”范围,您的应用程序可以(例如)请求访问用户的整个驱动器和“狭窄”范围。在后一种情况下,应用程序仅限于某些驱动器文件和/或文件夹。2018年末,谷歌宣布承诺收紧对许多谷歌服务(包括硬盘)的“许可”范围的限制。2019年5月,他们推出了一项针对驱动器API的更新政策:

使用此更新的策略,我们将限制具有 通过驱动器API广泛访问内容或数据。应用程序应该移动到 每文件用户同意模型,允许用户更精确地 确定允许应用访问哪些文件。这意味着 某些类型的应用程序可以向消费者请求受限范围 谷歌账户。一如既往,G套件管理员控制着 他们用户的应用程序

更用户友好、更窄的范围被标记,并在整个谷歌API文档中被推荐使用。对于驱动器,建议使用3个作用域:

  • https://www.googleapis.com/auth/drive.appfolder
    允许访问 应用程序数据文件夹
  • https://www.googleapis.com/auth/drive.file
    每个文件对文件的访问 由应用程序创建或打开。文件授权是在 基于每个用户,并在用户取消对 应用程序
  • https://www.googleapis.com/auth/drive.install
    特殊 用于允许用户批准应用程序安装的范围,以及范围 需要请求
您的用例可能属于
drive.appfolder
drive.file
范围
drive.appfolder
如果您希望存储用户不会也不应该触摸的内容,那么它可以正常工作:

“应用程序数据”文件夹是一个特殊的隐藏文件夹,用于保存应用程序 可用于存储特定于应用程序的数据,如配置 文件夹。应用程序数据文件夹是在您 尝试在其中创建文件。使用此文件夹存储任何文件 用户不应该直接与之交互。此文件夹仅适用于 可由应用程序访问,并且其内容对 用户和来自其他驱动器应用的

当用户从其应用程序中卸载应用程序时,应用程序数据文件夹将被删除 我的驱动器。用户还可以手动删除应用程序的数据文件夹

如果您的用例与您的应用程序代表用户创建的某些数据有关,并且用户或其他用户应该能够查看/编辑/共享这些文档,
drive.file
适用。
drive.file
的问题在于它只适用于应用程序创建的“对象”。如果您的ABC应用程序创建文件夹Foo,然后在该文件夹中创建一些文件,则您的应用程序将能够访问该文件夹和这些文件,并且只能访问这些文件

使用
drive.file
时,没有父/子所有权语义,也没有从父级到子级的权限传播。用户(在他们自己的浏览器中,没有你的应用程序)可以在Foo文件夹中创建更多文件,但你的应用程序将无法读取这些文件

值得注意的是,
drive.file
并没有授予对某个特定文件夹的访问权……但这相当于一个或多个待创建文件夹(由应用程序创建)的最终结果


如果您正在寻找一种访问现有文件夹的方法,您可能需要查看其中一个。使用其中一个作用域需要您的应用程序通过一个。大多数应用程序只有在文件夹中存储数据的权限

有关API权限的详细信息,请访问

drive.file
作用域可能适用于某些应用程序,因为它似乎可以访问用户确定的单个文件。用户如何确定文件?根据下面的帖子,他们会将一个文件从驱动器应用程序发送到我的应用程序


因此,与Dropbox或OneDrive不同,Google Drive只有两种类型的权限:Drive或Drive.File。简单

您希望使用应用程序访问Google Drive上的有限文件夹。如果我的理解是正确的,那么使用
https://www.googleapis.com/auth/drive.file
是否使用驱动器API?通过使用此选项,应用程序只能访问应用程序创建的文件夹和文件。而且,当使用服务帐户时,您也可以使用受限驱动器。但我不确定这是否是你想要的方向。所以我将此作为评论发布。如果这不是你想要的方向,我道歉。