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 令牌凭据。
  • 为了提高用户的安全性和隐私性,为获得授权而颁发的每个用户凭据都遵循最小权限原则,即仅包含管理访问令牌所需的访问令牌和信息。