如何请求用户授权应用程序使用 API 访问 Google Drive 文件

问题描述 投票:0回答:2

我有一个可以协同工作的网络应用程序和 Google 文档插件。 Docs 插件将当前正在运行的文档的 Google Drive 文件 ID 传递给 Web 应用程序。

我的网络应用程序需要能够访问/下载文件内容。我希望 Web 应用程序使用drive.file 范围,因此需要用户授权 Web 应用程序访问 Google 云端硬盘中的文件。

我还没有找到任何 API 可以让我请求用户授权 Web 应用程序对已知文件 ID 的权限。我可以使用文件选择器 API,但用户必须在其云端硬盘中找到该文件(鉴于我们已经知道该文件并且容易出错,这会带来令人烦恼的用户体验)。

有什么方法可以将用户重定向到 Google Drive URL,并要求他们确认要使用我的网络应用程序打开文件吗?或者在文件选择器中预先选择文件?

oauth google-api google-drive-api google-oauth
2个回答
0
投票

我认为您没有完全理解示波器的工作原理。

无法仅请求单个文件 ID 的权限。范围要么全有,要么全无。如果您具有只读访问权限,则您对用户驱动器帐户上的所有文件都具有只读访问权限。写访问权限相同。

现在让我们看看Scopes#Drive

如果您使用drive.file范围请求用户授权。它将允许您的应用程序在用户驱动器帐户上创建文件,并访问您的应用程序创建的那些文件,并且仅访问这些文件。

因此无法仅访问用户驱动器帐户上的单个文件。如果您想访问用户帐户上不是由您的应用程序创建的文件,那么您将必须使用drive.readonly或drive。取决于您是否想要读取或写入访问权限。


0
投票

目前公开的 Drive API 无法实现这一点。在这方面,您的应用程序最受限制的范围是

drive.file
,它将允许您的应用程序访问用户使用选取器选择的或您创建的任何文件。

谷歌似乎实现这一点的方式是,当第一次加载谷歌选择器用户界面时,他们发送一个临时令牌,允许选择器完成它需要的大部分工作(列出所有文件,但不生成缩略图,因为当前已损坏并且仅适用于至少完整的

drive.readonly
范围)。

当用户在选择器中选择一个文件时,它将向私有 Google API(包含 OAuth 令牌和临时令牌)发送几个请求,这将授予您应用程序的客户端 ID 对该文件的访问权限。之后,您可以随意使用任何您喜欢的方法来编辑文件。但是,您需要用户的第一次交互才能将该请求发送到 Google API,以便 Google 将您的应用程序列入允许访问该文件 ID 的名单。

目前没有其他记录在案的方法可以做到这一点。我们进行 Google 验证只是因为我们的功能之一是通过 URL 导入云端硬盘文件。我们进行了探索,但目前(2024 年初)没有完全只读访问权限的公共方法可以做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.