为 Web 授权

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

Google Identity 服务 JavaScript 库支持用户登录进行身份验证,也支持授权以获取用于 Google API 的访问令牌。该库只能在浏览器中使用。

身份验证可识别某人,通常称为用户注册或登录。授权是授予或拒绝数据或资源的访问权限的过程。这包括征求和管理用户意见、限制通过范围共享的数据或资源量,以及检索用于 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 令牌凭据。
  • 为了提高用户的安全性和隐私性,为授权而发放的每位用户凭据都遵循最小权限原则,即仅包含访问令牌和管理令牌所需的信息。