本参考文档介绍了 Google 账号授权 JavaScript API,该 API 用于从 Google 获取授权代码或访问令牌。
方法:google.accounts.oauth2.initCodeClient
initCodeClient 方法会初始化并返回一个代码客户端,其中包含参数中的配置。
google.accounts.oauth2.initCodeClient(config: CodeClientConfig)
数据类型:CodeClientConfig
下表列出了 CodeClientConfig 数据类型的属性。
| 属性 | |
|---|---|
        
        client_id
        
       | 
      必需。应用的客户端 ID。您可以在 API 控制台中找到此值。 | 
        
        scope
        
       | 
      必需。以空格分隔的范围列表,用于标识应用可以代表用户访问的资源。这些值会告知 Google 向用户显示的同意屏幕。 | 
        include_granted_scopes | 
      
      (可选)默认值为 true。使应用能够使用增量授权来请求对上下文中的其他范围的访问权限。如果您将此参数的值设置为 false,并且授权请求获得批准,那么新访问令牌将仅涵盖此 CodeClientConfig 中请求的任何 scope 范围。
       | 
    
        
        redirect_uri
        
       | 
      重定向用户体验必需。确定 API 服务器在用户完成授权流程后将用户重定向至何处。该值必须与您在 API 控制台中配置的 OAuth 2.0 客户端的某个授权重定向 URI 完全一致,并且必须符合我们的重定向 URI 验证规则。弹出式界面将忽略该属性。 | 
        callback | 
      弹出式窗口用户体验必需。用于处理返回的代码响应的 JavaScript 函数。 重定向用户体验会忽略该属性。 | 
        state | 
      可选。建议用于重定向用户体验。指定应用用于在授权请求与授权服务器的响应之间保持状态的任何字符串值。 | 
        enable_granular_consent | 
      已弃用,如果设置,则不会产生任何影响。如需详细了解意见征求行为,请参阅 精细权限。 | 
        enable_serial_consent | 
      已弃用,如果设置,则不会产生任何影响。如需详细了解意见征求行为,请参阅 精细权限。 | 
        login_hint | 
      
      可选。如果您的应用知道哪个用户应授权该请求,则可以使用此属性向 Google 提供登录提示。如果成功,系统会跳过账号选择步骤。目标用户的电子邮件地址或 ID 令牌 sub 字段值。
      如需了解详情,请参阅 OpenID Connect 文档中的 login_hint 字段。
       | 
    
        hd | 
      
      可选。如果您的应用知道用户所属的 Workspace 网域,请使用此信息向 Google 提供提示。成功后,用户账号将仅限于或预选为所提供的网域。
      如需了解详情,请参阅 OpenID Connect 文档中的 hd 字段。
       | 
    
        ux_mode | 
      
      可选。用于授权流程的界面模式。默认情况下,系统会在弹出式窗口中打开意见征求流程。有效值为 popup 和 redirect。
       | 
    
        select_account | 
      可选,默认值为 'false'。布尔值,用于提示用户选择账号。 | 
        error_callback | 
      
      可选。用于处理某些非 OAuth 错误的 JavaScript 函数,例如弹出式窗口无法打开;或在返回 OAuth 响应之前关闭。
       输入参数的“type”字段给出了详细原因。 
  | 
    
数据类型:CodeClient
该类只有一个公共方法 requestCode,用于启动 OAuth 2.0 代码用户体验流程。
interface CodeClient {
  requestCode(): void;
}
数据类型:CodeResponse
系统会在弹出式用户体验中将 CodeResponse JavaScript 对象传递给您的 callback 方法。在重定向用户体验中,CodeResponse 将作为网址参数传递。
下表列出了 CodeResponse 数据类型的属性。
| 属性 | |
|---|---|
        code | 
      成功令牌响应的授权代码。 | 
        scope | 
      以空格分隔的用户批准的范围列表。 | 
        state | 
      您的应用用于在授权请求和响应之间保持状态的字符串值。 | 
        error | 
      单个 ASCII 错误代码。 | 
        error_description | 
      提供额外信息的人类可读 ASCII 文本,用于帮助客户端开发者了解发生的错误。 | 
        error_uri | 
      一个 URI,用于标识包含错误相关信息的人类可读网页,以便为客户端开发者提供有关错误的更多信息。 | 
方法:google.accounts.oauth2.initTokenClient
initTokenClient 方法会初始化并返回一个令牌客户端,其中包含参数中的配置。
google.accounts.oauth2.initTokenClient(config: TokenClientConfig)
数据类型:TokenClientConfig
下表列出了 TokenClientConfig 数据类型的属性。
| 属性 | |
|---|---|
        client_id | 
      必需。应用的客户端 ID。您可以在 API 控制台中找到此值。 | 
        callback | 
      必需。用于处理返回的令牌响应的 JavaScript 函数。 | 
        scope | 
      必需。以空格分隔的范围列表,用于标识应用可以代表用户访问的资源。这些值会告知 Google 向用户显示的同意屏幕。 | 
        include_granted_scopes | 
      
      (可选)默认值为 true。使应用能够使用增量授权来请求对上下文中的其他范围的访问权限。如果您将此参数的值设置为 false,并且授权请求获得批准,那么新访问令牌将仅涵盖此 TokenClientConfig 中请求的任何 scope 范围。
       | 
    
        prompt | 
      
        可选,默认值为 select_account。以空格分隔的提示列表(区分大小写),用于向用户显示。可能的值包括:
      
  | 
    
        enable_granular_consent | 
      已弃用,如果设置,则不会产生任何影响。如需详细了解意见征求行为,请参阅 精细权限。 | 
        enable_serial_consent | 
      已弃用,如果设置,则不会产生任何影响。如需详细了解意见征求行为,请参阅 精细权限。 | 
        login_hint | 
      
      可选。如果您的应用知道哪个用户应授权该请求,则可以使用此属性向 Google 提供登录提示。如果成功,系统会跳过账号选择步骤。目标用户的电子邮件地址或 ID 令牌 sub 字段值。
      如需了解详情,请参阅 OpenID Connect 文档中的 login_hint 字段。
       | 
    
        hd | 
      
      可选。如果您的应用知道用户所属的 Workspace 网域,请使用此信息向 Google 提供提示。成功后,用户账号将仅限于或预选为所提供的网域。
      如需了解详情,请参阅 OpenID Connect 文档中的 hd 字段。
       | 
    
        state | 
      可选。不推荐。指定应用用于在授权请求与授权服务器的响应之间保持状态的任何字符串值。 | 
        error_callback | 
      
      可选。用于处理某些非 OAuth 错误的 JavaScript 函数,例如弹出式窗口无法打开;或在返回 OAuth 响应之前关闭。
       输入参数的“type”字段给出了详细原因。 
  | 
    
数据类型:TokenClient
该类只有一个公共方法 requestAccessToken,用于启动 OAuth 2.0 令牌用户体验流程。
interface TokenClient {
  requestAccessToken(overrideConfig?: OverridableTokenClientConfig): void;
}
| 参数 | ||
|---|---|---|
        overrideConfig | 
      OverridableTokenClientConfig | 可选。在此方法中要替换的配置。 | 
数据类型:OverridableTokenClientConfig
下表列出了 OverridableTokenClientConfig 数据类型的属性。
| 属性 | |
|---|---|
        scope | 
      可选。以空格分隔的范围列表,用于标识应用可以代表用户访问的资源。这些值会告知 Google 向用户显示的同意屏幕。 | 
        include_granted_scopes | 
      
      (可选)默认值为 true。使应用能够使用增量授权来请求对上下文中的其他范围的访问权限。如果您将此参数的值设置为 false,并且授权请求获得批准,那么新访问令牌将仅涵盖此 OverridableTokenClientConfig 中请求的任何 scope 范围。
       | 
    
        prompt | 
      可选。以空格分隔的提示列表(区分大小写),用于向用户显示。 | 
        enable_granular_consent | 
      已弃用,如果设置,则不会产生任何影响。如需详细了解意见征求行为,请参阅 精细权限。 | 
        enable_serial_consent | 
      已弃用,如果设置,则不会产生任何影响。如需详细了解意见征求行为,请参阅 精细权限。 | 
        login_hint | 
      
      可选。如果您的应用知道哪个用户应授权该请求,则可以使用此属性向 Google 提供登录提示。如果成功,系统会跳过账号选择步骤。目标用户的电子邮件地址或 ID 令牌 sub 字段值。
      如需了解详情,请参阅 OpenID Connect 文档中的 login_hint 字段。
       | 
    
        state | 
      可选。不推荐。指定应用用于在授权请求与授权服务器的响应之间保持状态的任何字符串值。 | 
数据类型:TokenResponse
系统会将 TokenResponse JavaScript 对象传递给弹出式界面中的回调方法。
下表列出了 TokenResponse 数据类型的属性。
| 属性 | |
|---|---|
        access_token | 
      成功令牌响应的访问令牌。 | 
        expires_in | 
      访问令牌的生命周期(以秒为单位)。 | 
        hd | 
      已登录用户所属的托管网域。 | 
        prompt | 
      从 TokenClientConfig 或 OverridableTokenClientConfig 指定的可能值列表中使用的提示值。 | 
        token_type | 
      所颁发的令牌的类型。 | 
        scope | 
      以空格分隔的用户批准的范围列表。 | 
        state | 
      您的应用用于在授权请求和响应之间保持状态的字符串值。 | 
        error | 
      单个 ASCII 错误代码。 | 
        error_description | 
      提供额外信息的人类可读 ASCII 文本,用于帮助客户端开发者了解发生的错误。 | 
        error_uri | 
      一个 URI,用于标识包含错误相关信息的人类可读网页,以便为客户端开发者提供有关错误的更多信息。 | 
方法:google.accounts.oauth2.hasGrantedAllScopes
检查用户是否已授予所有指定的范围。
google.accounts.oauth2.hasGrantedAllScopes(
                                            tokenResponse: TokenResponse,
                                            firstScope: string, ...restScopes: string[]
                                          ): boolean;
| 参数 | ||
|---|---|---|
        tokenResponse | 
      
      TokenResponse
       | 
      
      必需。一个 TokenResponse 对象。
       | 
    
    firstScope | 
    字符串 | 必需。要检查的范围。 | 
    restScopes | 
    字符串[] | 可选。要检查的其他范围。 | 
| 返回 | |
|---|---|
| 布尔值 | 如果所有范围都已获授,则为 true。 | 
方法:google.accounts.oauth2.hasGrantedAnyScope
检查用户是否已授予任何指定范围。
google.accounts.oauth2.hasGrantedAnyScope(
                                           tokenResponse: TokenResponse,
                                           firstScope: string, ...restScopes: string[]
                                         ): boolean;
| 参数 | ||
|---|---|---|
        tokenResponse | 
      
       TokenResponse
       | 
      
      必需。一个 TokenResponse 对象。
       | 
    
    firstScope | 
    字符串 | 必需。要检查的范围。 | 
    restScopes | 
    字符串[] | 可选。要检查的其他范围。 | 
| 返回 | |
|---|---|
| 布尔值 | 如果授予了任何范围,则为 true。 | 
方法:google.accounts.oauth2.revoke
revoke 方法会撤消用户授予应用的所有范围。撤消权限需要有效的访问令牌。
google.accounts.oauth2.revoke(accessToken: string, done: () => void): void;
| 参数 | ||
|---|---|---|
        accessToken | 
      字符串 | 必需。有效的访问令牌。 | 
callback | 
      函数 | 可选。RevocationResponse 处理程序。 | 
数据类型:RevocationResponse
系统会将 RevocationResponse JavaScript 对象传递给您的回调方法。
下表列出了 RevocationResponse 数据类型的属性。
| 属性 | |
|---|---|
successful | 
      布尔值。成功时为 true,失败时为 false。 | 
    
error | 
      字符串。成功时为未定义。单个 ASCII 错误代码。这包括但不限于标准 OAuth 2.0 错误代码。revoke 方法的常见错误:
        
  | 
    
error_description | 
      字符串。成功时为未定义。直观易懂的 ASCII 文本,提供有关 error 属性的其他信息。开发者可以利用此功能更好地了解发生的错误。error_description 字符串仅提供英文版。
      对于 error 中列出的常见错误,相应的 error_description 为:
      
  |