本文档包含特定于 Google Drive API 的授权和身份验证信息。在阅读本文档之前,请务必先阅读了解身份验证和授权,熟悉 Google Workspace 的一般身份验证和授权知识。
配置 OAuth 2.0 以进行授权
为了授权您的应用,Google Drive API 要求您在两个位置定义 OAuth 范围:Google Cloud 控制台和您的应用。
在 Google Cloud 控制台中,您必须在应用的 OAuth 权限请求页面配置中声明应用所需的范围。这是您的应用可以请求的最高权限级别。这相当于向 Google 提出的正式请求,声明的范围是 Google 在同意页面上向用户显示的内容。这样一来,用户便可确切了解您的应用请求访问哪些数据和操作。
配置 OAuth 权限请求页面并选择范围,以定义向用户和应用审核者显示哪些信息,并注册应用以便日后发布。
在应用中,当您启动 API 时,必须明确请求该会话所需的特定范围。虽然 Google Cloud 控制台定义了您的应用可以请求的最高权限级别,但代码决定了特定用户的实际权限。这有助于确保应用仅请求特定任务所需的权限。
您可以在应用的代码中一次性以数组形式声明一个或多个 OAuth 范围。
以下代码示例展示了如何声明多个 OAuth 范围:
Java
List<String> SCOPES = Arrays.asList(
DriveScopes.DRIVE_FILE,
DriveScopes.DRIVE_METADATA_READONLY
);
Python
SCOPES = [
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/drive.metadata.readonly",
]
Node.js
const SCOPES = [
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive.metadata.readonly'
];
如需查看如何在完整的代码示例中声明和使用范围,请参阅快速入门。
Drive API 范围
如需定义授予应用的访问权限级别,您需要确定并声明授权范围。授权范围是一个 OAuth 2.0 URI 字符串,其中包含 Google Workspace 应用名称、应用访问的数据类型以及访问权限级别。范围是您的应用对使用 Google Workspace 数据(包括用户的 Google 账号数据)的请求。
当应用安装完毕后,系统会要求用户验证应用使用的范围。一般来说,您应尽可能选择范围最窄的权限,并避免请求应用不需要的权限。用户更乐意向描述清晰的有限范围授予访问权限。
尽可能使用非敏感范围,因为这样可以授予每个文件的访问权限,并缩小应用所需特定功能的访问权限。
非敏感范围
对于大多数使用场景,建议使用以下 Drive API 范围:
| 范围代码 | 说明 |
|---|---|
https://www.googleapis.com/auth/drive.appdata |
在您的 Google 云端硬盘中查看和管理应用的配置数据。 |
https://www.googleapis.com/auth/drive.install |
允许应用显示为“打开方式”或“新建”菜单中的一个选项。 |
https://www.googleapis.com/auth/drive.file |
创建新的云端硬盘文件,或修改您使用应用打开的现有文件,或用户在使用 Google Picker API 或应用的 file picker 时与应用共享的现有文件。 |
敏感范围
| 范围代码 | 说明 |
|---|---|
https://www.googleapis.com/auth/drive.apps.readonly |
查看已获授权访问您云端硬盘的应用。 |
受限范围
| 范围代码 | 说明 |
|---|---|
https://www.googleapis.com/auth/drive |
查看和管理您的所有云端硬盘文件。 |
https://www.googleapis.com/auth/drive.readonly |
查看和下载您的所有云端硬盘文件。 |
https://www.googleapis.com/auth/drive.activity |
查看和添加云端硬盘中文件的活动记录。 |
https://www.googleapis.com/auth/drive.activity.readonly |
查看云端硬盘中的文件的活动记录。 |
https://www.googleapis.com/auth/drive.meet.readonly |
查看由 Google Meet 创建或修改的云端硬盘文件。 |
https://www.googleapis.com/auth/drive.metadata |
查看和管理您云端硬盘中文件的元数据。 |
https://www.googleapis.com/auth/drive.metadata.readonly |
查看云端硬盘中文件的元数据。 |
https://www.googleapis.com/auth/drive.scripts |
修改用 Google Apps 脚本语言编写的脚本的行为。 |
上表中的范围表示其敏感程度,具体定义如下:
非敏感:这些范围提供的授权范围最小,仅需要基本的 OAuth 应用验证。如需了解详情,请参阅验证要求。
敏感:这些范围可让您的应用访问用户授权的特定 Google 用户数据。它们需要额外的 OAuth 应用验证。如需了解详情,请参阅敏感范围和受限范围要求。
受限:这些范围可广泛访问 Google 用户数据,并且需要进行受限范围 OAuth 应用验证。如需了解详情,请参阅 Google API 服务用户数据政策和特定 API 范围的其他要求。 另请参阅 Google 云端硬盘服务条款。
如果您在服务器上存储(或传输)受限范围的数据,则必须接受安全性评估。
如果您的应用需要访问任何其他 Google API,您也可以添加这些范围。如需详细了解 Google API 范围,请参阅使用 OAuth 2.0 访问 Google API。
如需详细了解特定的 OAuth 2.0 范围,请参阅适用于 Google API 的 OAuth 2.0 范围。
受限范围的资格要求
只有特定类型的应用才能使用 Google 云端硬盘的受限范围。如需符合条件,您的应用必须属于以下类别之一:
备份与同步:提供本地同步或自动备份用户云端硬盘文件的平台专用应用和 Web 应用。
效率和教育:主要用户界面可能涉及与云端硬盘文件、元数据或权限互动的应用。这些应用包括任务管理、记笔记、工作群组通信和课堂协作应用。
报告和安全性:可让用户或客户深入了解文件共享或访问方式的应用。
如需继续使用受限范围,您应为受限范围验证做好应用准备。
从受限范围迁移现有应用
如果您的 Drive 应用使用受限范围,我们建议您迁移到非敏感的 Drive API 范围。使用非敏感范围(例如 drive.file)可以授予每个文件的访问权限,并缩小应用所需特定功能的访问权限。
许多应用无需进行任何更改即可过渡到按文件访问。
如果您使用的是自己的文件选择器,建议您改用 Google Picker API,该 API 完全支持不同的范围。
云端硬盘文件范围的优势
将 drive.file OAuth 范围与 Google Picker API 结合使用,可优化应用的用户体验和安全性。
借助 drive.file OAuth 范围,用户可以选择要与您的应用共享哪些文件。这样一来,用户可以更好地控制应用对文件的访问权限,并更放心地使用您的应用。相比之下,如果要求对所有云端硬盘文件拥有广泛的访问权限,可能会让用户不愿意与您的应用互动。
以下是您应使用 drive.file 范围的一些原因:
易用性:
drive.file范围适用于所有 Drive API REST 资源,这意味着您可以像使用更广泛的 OAuth 范围一样使用它。功能:Google Picker API 提供的界面与 Google 云端硬盘界面类似。这包括多个视图,用于显示云端硬盘文件的预览和缩略图,以及一个内嵌的模态窗口,以便用户无需离开主应用。
便利性:应用在使用 Google 选择器文件过滤器时,可以针对某些云端硬盘文件类型(例如 Google 文档、表格和照片)应用过滤器。
简单的验证流程:由于
drive.file不属于敏感范围,因此可以简化验证流程。
安全地存储刷新令牌
如需使用 Drive API 访问非公开数据,您的应用必须获取用于授予该 API 访问权限的访问令牌。一个访问令牌可以授予对多个 API 的不同程度的访问权限,具体取决于您请求的范围。
由于访问令牌的有效期较短,因此您必须使用刷新令牌才能长期访问 Drive API。借助刷新令牌,您的应用可以请求新的访问令牌。
将刷新令牌保存在安全的长期存储空间中,并在令牌保持有效期间继续使用。
如需了解详情,请参阅使用 OAuth 2.0 访问 Google API。
相关主题
- 如需大致了解 Google Workspace 中的身份验证和授权,请参阅了解身份验证和授权。
- 如需大致了解 Google Cloud 中的身份验证和授权,请参阅身份验证概览。
- 如需详细了解服务账号,请参阅服务账号。
- 如需问题排查方面的帮助,请参阅解决错误。