为 Web 授权

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

Google Identity 服务 JavaScript 库同时支持用户登录的身份验证,以及获取访问令牌以用于 Google APIs 的授权。该库仅供在浏览器中使用。

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

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

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

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

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

具体变化

对于用户,与之前的 JavaScript 库相比,Google Identity 服务库在易用性方面进行了多项改进,包括:

  • 用户登录的身份验证和获取访问令牌 以调用 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 服务库对象和方法。
    • 为了提高用户安全性和意识,我们移除了对已过期的访问令牌的自动刷新。访问令牌过期后,您的应用必须处理 Google API 错误响应,请求并获取新的有效访问令牌。
    • 为了支持身份验证和授权时刻的明确分离,我们不再支持同时将用户登录到您的应用及其 Google 账号,同时还发出访问令牌。以前,请求访问令牌还会将用户登录到其 Google 账号,并返回用于用户身份验证的 JWT ID 令牌凭据。
  • 为了提高用户安全性和隐私权,为 授权而针对每个用户颁发的凭据遵循最小权限原则,仅包含 访问令牌和管理该令牌所需的信息。