本文档包含特定于 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 或应用的文件选择器时与应用共享的文件。 |
敏感范围
| 范围代码 | 说明 |
|---|---|
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 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 Picker 文件中的过滤器时,可以为某些云端硬盘 文件类型(例如 Google 文档、表格和照片)应用过滤器。
简单的验证:由于
drive.file是非敏感的,因此 可以简化验证流程。
安全地存储刷新令牌
如需使用 Drive API 访问非公开数据,您的应用必须获取用于授予该 API 访问权限的访问令牌。单个访问令牌可以授予对多个 API 的不同程度的访问权限,具体取决于您请求的范围。
由于访问令牌的有效期较短,因此您必须使用刷新令牌才能长期访问 Drive API。刷新令牌允许您的应用请求新的访问令牌。
将刷新令牌保存在安全的长期存储空间中,并在令牌保持有效期间继续使用。
如需了解详情,请参阅使用 OAuth 2.0 访问 Google API。
相关主题
- 如需大致了解 Google Workspace 中的身份验证和授权, 请参阅了解身份验证和授权。
- 如需大致了解 Google Cloud 中的身份验证和授权,请参阅 身份验证概览。
- 如需详细了解服务账号,请参阅Service accounts。
- 如需获得问题排查方面的帮助,请参阅解决 错误。