Google api 如何在没有服务帐户的情况下以编程方式仅访问一个特定的google驱动器

Google api 如何在没有服务帐户的情况下以编程方式仅访问一个特定的google驱动器,google-api,google-drive-api,Google Api,Google Drive Api,我正在编写一个服务器端python脚本,需要使用该脚本将文件存储在特定的gdrive中。Pydrive,这建议使用服务帐户。 然而,这意味着有了这个服务帐户的凭据,所有的GDrive都可以访问,我宁愿避免这样做 理想情况下,只有一个特定的gdrive或一个特定用户可以访问的所有gdrive应该是可访问的 是否可以通过编程方式只访问一个特定的gdrive [编辑] 正如在评论中提到的,我显然不是在寻找OAuth流。 我正在寻找一个服务器到服务器的通信访问一个特定的谷歌驱动器使用最小权限访问的原则。

我正在编写一个服务器端python脚本,需要使用该脚本将文件存储在特定的gdrive中。Pydrive,这建议使用服务帐户。 然而,这意味着有了这个服务帐户的凭据,所有的GDrive都可以访问,我宁愿避免这样做

理想情况下,只有一个特定的gdrive或一个特定用户可以访问的所有gdrive应该是可访问的

是否可以通过编程方式只访问一个特定的gdrive

[编辑]

正如在评论中提到的,我显然不是在寻找OAuth流。 我正在寻找一个服务器到服务器的通信访问一个特定的谷歌驱动器使用最小权限访问的原则。使用服务帐户+域范围的代理和google drive r/w范围执行此操作意味着使用此服务帐户可以访问所有google drive,这不是我想要的


不幸的是,有一个域名范围的政策,禁止共享谷歌驱动器到“其他”域名。这意味着我不能在没有域范围授权的情况下使用服务帐户,而只能与它共享驱动器。

我不理解你所说的“以编程方式”是什么意思,因为你已经将问题标记为oAuth-请求oAuth2流,这是交互式的。当没有人按下按钮时,这可能不是您要寻找的身份验证流。只需与服务帐户共享一个目录;不需要域范围的委托(启用此功能后,就不需要共享它)

人们甚至可以通过使用一个简单的云函数来提取整个驱动API访问凭证,该函数必须更新一个文件;通过HTTP触发,利用驱动器API。

可能的方法-虚拟帐户
您可以指定一个新帐户作为您的“服务帐户”。实际上,它不会是一个实际的服务帐户,它只是一个虚拟帐户,你可以称之为“gdrivebot@yourdomain.com". 然后你只能分享它绝对必要的东西。我认为这将是获得您想要的细粒度控制级别的唯一方法。不过,这需要管理员为此目的指定一个新帐户。

以编程方式,我的意思是没有用户交互。只需与服务帐户共享,而无需进行域范围的授权,这是一个好主意。我试试看。感谢与服务帐户共享而不进行任何域范围的委派是不可行的,因为存在一个域范围的策略,该策略不允许与未列入白名单的域共享驱动器。您是驱动器的所有者还是所有者?如果是这样,您可以下载客户端的凭据。如果没有,您可以创建服务帐户并为其分配有限的角色。然后,一旦用户(驱动器的所有者)同意使用请求的作用域,服务帐户就可以请求访问令牌。不幸的是,我不是所有者。我是否可以拥有一个角色,该角色仅授予对一个特定文件夹的服务帐户的读取权限?如果是这样的话,这将解决问题。是的,有这样的角色。如果你提供一些关于你试图完成的特定任务的背景信息,也许可以?AFAIK您试图做的是不可能的。我正在尝试在服务器上运行python脚本,该脚本会自动将文件上载到特定的gdrive文件夹。目标是给这个python脚本最少的特权,以便它用来访问gdrive api的凭据只能访问这个特定的文件夹。由于这是一台服务器,因此没有用户交互。我很抱歉回复得太晚,谢谢你的回答。然而,我有一种感觉,我在概念上误解了谷歌世界中的身份验证。我的理解是,如果没有某种用户交互,就不可能从服务器上运行的代码中验证“正常”用户帐户。这就是为什么会有服务帐户