Web 授权

Web 应用必须获取访问令牌才能安全地调用 Google API。

Google Identity Services JavaScript 库既支持用户登录,也支持授权获取用于 Google API 的访问令牌。该库仅适用于浏览器。

身份验证可确定用户的身份,通常称为用户注册或登录。授权是授予或拒绝数据或资源访问权限的过程。其中包括获取和管理用户同意声明、限制与范围共享的数据量或资源数量,以及检索用于 Google API 的访问令牌。

这些指南涵盖授权和数据共享主题。

用户授权的工作原理详细描述了用户授权的各个步骤,并包含用户对话框示例。

如果您需要身份验证方面的帮助以及如何实现用户注册和登录,请参阅使用 Google 帐号登录

此库不适用于服务器端 JavaScript 框架(例如 Node.js),而应使用 Google 的 Node.js 客户端库。

具体变化

相较于早期的 JavaScript 库,Google Identity Services 库为用户提供了很多易用性改进,其中包括:

  • 用户登录身份验证和用于调用 Google API 的访问令牌授权,现在有两种独立的用户流:一个用于登录,另一个用于授权,在授权过程中使用单独的用户流程,以明确区分您和应用的操作。
  • 提高了用户同意期间数据共享的可见性和精细控制。
  • 基于浏览器的弹出式对话框可减少麻烦,并且不需要用户离开您的网站即可执行以下操作:
    • 从 Google 获取访问令牌,或
    • 向后端平台发送授权代码。

对于开发者而言,我们的工作重点是降低复杂性、提高安全性,并使集成尽可能快速轻松。部分变更包括:

  • 用于登录的用户身份验证以及用于获取访问令牌以调用 Google API 的授权,是两组独立的不同 JavaScript 对象和方法。这样可以降低实现身份验证或授权所需的复杂性和详细程度。
  • 单个 JavaScript 库现在支持以下两项:
    • OAuth 2.0 隐式流程,用于获取用于在浏览器内使用的访问令牌
    • OAuth 2.0 授权代码流程(也称为离线访问),可安全地将授权代码发送到后端平台,并在其中交换访问令牌和刷新令牌。以前,这些流程只能通过使用多个库和直接调用 OAuth 2.0 端点来使用。单个库可以缩短集成时间并减少工作量,您可以集中精力在一个统一的界面上,而无需学习和学习多个库和 OAuth 2.0 概念。
  • 为简单性和可读性已移除通过 getter 样式函数间接转换。
  • 处理授权响应时,您可以选择是否使用 Promise 执行请求,而不是系统为您做出决定。
  • JavaScript 版 Google API 客户端库已更新,并进行了以下变更:
    • gapi.auth2 模块以及关联的对象和方法不再在后台自动加载,并且已替换为更明确的 Google Identity Services 库对象和方法。
    • 自动刷新过期的访问令牌已被移除,以提高用户安全性和认知度。访问令牌到期后,您的应用必须处理 Google API 错误响应、请求并获取新的有效访问令牌。
    • 为了支持将身份验证和授权时刻明确区分开来,不再支持用户同时登录您的应用和 Google 帐号,同时颁发访问令牌。以前,请求访问令牌时还会使用户登录其 Google 帐号,并会返回 JWT ID 令牌凭据以用于用户身份验证。
  • 为了提高用户安全性和隐私性,为每个用户颁发的授权凭据都遵循最小权限原则,通过仅包含访问令牌和管理令牌所需的信息。