本文介绍了安装在手机、平板电脑和 计算机使用 Google 的 OAuth 2.0 端点为 Google API。
OAuth 2.0 允许用户与应用共享特定数据,同时 用户名、密码和其他隐私信息 例如,应用可以使用 OAuth 2.0 从 用户在 Google 云端硬盘中存储文件。
已安装的应用会分发到各个设备,并且假定这些应用 不能保守秘密。它们可以在用户使用应用期间或在以下情况下访问 Google API: 应用正在后台运行
此授权流程与 Web 服务器应用。它们的主要区别在于 要求已安装的应用必须打开系统浏览器并提供一个本地重定向 URI 来处理 Google 授权服务器的响应。
替代方案
对于移动应用,您可能希望使用 Google 登录功能: Android 或 iOS。Google 登录功能 客户端库可处理身份验证和用户授权,而且可能更简单 实现比此处所述的较低级别的协议更高
适用于在不支持系统浏览器或输入受限的设备上运行的应用 电视、游戏机、相机或打印机等功能,请参阅 适用于电视和设备 或在电视和受限输入设备上登录。
库和示例
我们建议您使用以下库和示例来帮助您实现 OAuth 2.0 流程 文档中的说明:
前提条件
为您的项目启用 API
任何调用 Google API 的应用都需要在 API Console。
如需为您的项目启用该 API,请按以下步骤操作:
- Open the API Library 在 Google API Console。
- If prompted, select a project, or create a new one.
- API Library 列出了所有可用的 API(按产品分组) 家庭和受欢迎程度。如果列表中没有显示您要启用的 API,请使用搜索功能 找到,或在产品系列中点击查看全部。
- 选择您要启用的 API,然后点击启用按钮。
- If prompted, enable billing.
- If prompted, read and accept the API's Terms of Service.
创建授权凭据
任何使用 OAuth 2.0 访问 Google API 的应用都必须具有授权凭据 来向 Google 的 OAuth 2.0 服务器标识应用以下步骤说明了如何 为项目创建凭据然后,您的应用就可以使用这些凭据访问 API 为该项目启用的功能
- Go to the Credentials page.
- 依次点击创建凭据 > OAuth 客户端 ID。
- 下面几部分介绍了客户端类型和 Google 的 授权服务器支持的所有操作。为您的 为您的 OAuth 客户端命名,并将表单中的其他字段设置为 适当的选择。
Android
- 选择 Android 应用类型。
- 输入 OAuth 客户端的名称。此名称会显示在您项目的 Credentials page 来标识客户端。
- 输入您的 Android 应用的软件包名称。该值在
<manifest>
元素的package
属性 。 - 输入应用分发的 SHA-1 签名证书指纹。
- 如果您的应用使用 Google Play 应用签名,请复制 SHA-1 从 Play 管理中心的“应用签名”页面获取指纹。
- 如果您自行管理密钥库和签名密钥,请使用 keytool 实用程序
以易于用户理解的格式输出证书信息。将
SHA1
值Certificate fingerprints
keytool 输出。请参阅 对客户端进行身份验证 适用于 Android 的 Google API 文档。
- (可选)验证您对 Android 设备的所有权 应用。
- 点击创建。
iOS
- 选择 iOS 应用类型。
- 输入 OAuth 客户端的名称。此名称会显示在您项目的 Credentials page 来标识客户端。
- 输入应用的软件包标识符。软件包 ID 是 CFBundleIdentifier 键添加到应用的信息属性列表资源文件 (info.plist) 中。值 最常显示在“General”窗格或“Signing &功能窗格的 Xcode 项目编辑器。软件包 ID 也会显示在 应用的“应用信息”页面 Apple 的 App Store Connect 网站。
- (选填)
如果您的应用已在 Apple 的 App Store 中发布,请输入其 App Store ID。商店 ID 为 每个 Apple App Store 网址中包含的数字字符串。
- 打开 Apple App Store 应用 。
- 搜索您的应用。
- 选择“分享”按钮(正方形和向上箭头符号)。
- 选择复制链接。
- 将链接粘贴到文本编辑器中。App Store ID 是网址的最后一部分。
示例:
https://apps.apple.com/app/google/id284815942
- (选填)
输入您的团队 ID。请参阅 查找您的团队 ID 。
- 点击创建。
UWP
- 选择通用 Windows 平台应用类型。
- 输入 OAuth 客户端的名称。此名称会显示在您项目的 Credentials page 来标识客户端。
- 输入应用的 12 个字符的 Microsoft Store ID。您可以在 Microsoft 合作伙伴中心 在 应用身份 “应用管理”部分中的“管理”页面。
- 点击创建。
对于 UWP 应用,自定义 URI scheme 不得超过 39 个字符。
自定义 URI scheme(Android、iOS、UWP)
自定义 URI scheme 是一种深层链接形式,它通过自定义 scheme 来打开您的应用。
在 Android 上使用自定义 URI scheme 的替代方案使用 Android 版 Google 登录 SDK 此方法可将 OAuth 2.0 响应直接发送到您的应用中, 重定向 URI。
如何迁移到 Android 版 Google 登录 SDK
如果您目前在 Android 上为 OAuth 集成使用自定义架构,则需要执行以下操作: 完成以下操作,即可完全改用建议的 Google 登录功能 Android SDK:
- 更新代码以使用 Google 登录 SDK。
- 在 Google API 控制台中停用对自定义架构的支持。
如需迁移到 Google 登录 Android SDK,请按以下步骤操作:
-
更新您的代码,以使用 Google 登录 Android SDK:
-
检查您的代码以确定您的位置
向 Google 的 OAuth 2.0 服务器发送请求;如果使用自定义架构,您的请求将如下所示:
https://accounts.google.com/o/oauth2/v2/auth? scope=<SCOPES>& response_type=code& &state=<STATE>& redirect_uri=com.example.app:/oauth2redirect& client_id=<CLIENT_ID>
com.example.app:/oauth2redirect
是 上面的示例。请参阅redirect_uri
参数定义,详细了解相应格式 自定义 URI 架构值的名称。 -
记下
scope
和client_id
请求参数, 则需要配置 Google 登录 SDK。 -
按照
开始将 Google 登录功能集成到您的 Android 应用中
有关设置 SDK 的说明。您可以跳过
获取后端服务器的 OAuth 2.0 客户端 ID 步骤,就像重复使用一样
您在上一步中检索到的
client_id
。 -
按照
启用服务器端 API 访问权限
操作说明。具体步骤如下:
-
使用
getServerAuthCode
方法检索 范围。 - 将授权代码发送到应用的后端,以换取访问权限;刷新 令牌。
- 使用检索到的访问令牌代表用户调用 Google API。
-
使用
-
检查您的代码以确定您的位置
向 Google 的 OAuth 2.0 服务器发送请求;如果使用自定义架构,您的请求将如下所示:
-
在 Google API 控制台中停用对自定义架构的支持:
- 前往您的 OAuth 2.0 凭据 列表,然后选择您的 Android 客户端。
- 转到高级设置部分,取消选中 启用自定义 URI 架构复选框,然后点击保存至 停用自定义 URI scheme 支持。
启用自定义 URI scheme
如果推荐的替代方法对您不适用,您可以为自己的 Android 客户端:- 前往您的 OAuth 2.0 凭据列表和 选择您的 Android 客户端
- 转到高级设置部分,查看 启用自定义 URI 架构复选框,然后点击保存以启用 自定义 URI scheme 支持。
使用 Chrome Identity API 此方法可将 OAuth 2.0 响应直接发送到您的应用中, 重定向 URI。
验证应用所有权(Android、Chrome)
您可以验证对应用的所有权,以降低应用被假冒的风险。
Android
为了完成验证流程,您可以使用自己的 Google Play 开发者账号 (如果有的话,并且您的应用已在 Google Play 管理中心。以下 必须满足以下要求才能成功通过验证:
- 您必须在 Google Play 管理中心内注册使用 软件包名称和 SHA-1 签名证书指纹作为您使用的 Android OAuth 客户端 完成验证。
- 您必须拥有应用的管理员权限 Google Play 管理中心。 了解详情 了解 Google Play 管理中心内的访问权限管理。
在 Android 客户端的验证应用所有权部分中,点击 验证所有权按钮以完成验证流程。
如果验证成功,系统会显示一条通知,确认验证成功 验证流程否则,系统会显示错误提示。
要解决验证失败的问题,请尝试以下操作:
- 确保您要验证的应用是 Google Play 管理中心内已注册的应用。
- 确保您在 Google Play 管理中心。
Chrome
若要完成验证流程,请使用您的 Chrome 应用商店开发者账号。 若要成功验证,必须满足以下要求:
- 您必须在 Chrome 应用商店开发者信息中心 具有与您要完成的 Chrome 扩展程序 OAuth 客户端相同的产品 ID 验证。
- 您必须是 Chrome 应用商店内容的发布商。 了解详情 了解 Chrome 应用商店开发者信息中心内的访问权限管理。
在 Chrome 扩展程序客户端的验证应用所有权部分,点击 验证所有权按钮以完成验证流程。
注意:请稍等几分钟,然后再完成验证流程。 授予访问您账号的权限。
如果验证成功,系统会显示一条通知,确认验证成功 验证流程否则,系统会显示错误提示。
要解决验证失败的问题,请尝试以下操作:
环回 IP 地址(macOS、Linux、Windows 桌面设备)
要使用此网址接收授权代码,您的应用必须监听 本地网络服务器很多平台(但并非所有平台)都能做到这一点。但是,如果您的平台 支持,则我们建议使用此机制来获取授权代码。
当您的应用收到授权响应时,为了获得最佳可用性,它应该通过以下方式进行响应: 显示一个 HTML 网页,指示用户关闭浏览器并返回您的应用。
推荐用法 | macOS、Linux 和 Windows 桌面(但不包括通用 Windows 平台)应用 |
表单值 | 将应用类型设置为桌面应用。 |
手动复制/粘贴
确定访问权限范围
范围让您的应用可以仅请求访问所需的资源,同时 让用户能够控制他们向您的应用授予的访问权限大小。因此, 请求的范围数量与可能性 征得用户同意。
在开始实现 OAuth 2.0 授权之前,我们建议您确定范围 您的应用需要获取访问权限的请求。
OAuth 2.0 API 范围文档包含完整的 可用于访问 Google API 的范围列表。
获取 OAuth 2.0 访问令牌
以下步骤展示了您的应用如何与 Google 的 OAuth 2.0 服务器交互,以获取 用户同意代表其执行 API 请求。您的应用必须具有 然后才能执行需要用户授权的 Google API 请求。
第 1 步:生成代码验证程序和验证代码
Google 支持用于代码交换的证明密钥 (PKCE) 协议提高已安装应用流程的安全性。对于每个 及其转换后的值(称为“code_challenge”)发送到 授权服务器获取授权代码。
创建代码验证程序
code_verifier
是一个高熵加密随机字符串,它使用未预留
字符 [A-Z] / [a-z] / [0-9] /“-”/"."/“_”/“~”,长度至少为 43 个字符
长度上限为 128 个字符。
代码验证程序应具有足够的熵,以使猜测值不切实际。
创建代码质询
支持两种创建代码质询的方法。
代码验证生成方法 | |
---|---|
S256(推荐) | 代码质询是 Base64网址(无填充)编码的 SHA256 代码哈希
验证程序。
|
纯色 | 代码质询与上面生成的代码验证程序相同的值。
|
第 2 步:向 Google 的 OAuth 2.0 服务器发送请求
要获得用户授权,请向 Google 的授权服务器发送请求,网址为:
https://accounts.google.com/o/oauth2/v2/auth
。此端点处理活跃会话查询,
对用户进行身份验证,并征得用户同意。端点只能通过 SSL 访问
拒绝 HTTP(非 SSL)连接。
授权服务器支持安装的以下查询字符串参数 应用:
参数 | |||||||
---|---|---|---|---|---|---|---|
client_id |
必需
应用的客户端 ID。您可以在 API Console Credentials page。 |
||||||
redirect_uri |
必需
确定 Google 的授权服务器如何向您的应用发送响应。还有 已安装的应用有多个重定向选项,并且您将为自己的 包含特定重定向方法的授权凭据 。 该值必须与 OAuth 2.0 中某个已获授权的重定向 URI 完全匹配
是在客户端的
API Console
Credentials page。如果此值与
已获授权的 URI,则会收到 下表显示了适用于当前所用
|
||||||
response_type |
必需
确定 Google OAuth 2.0 端点是否返回授权代码。 对于已安装的应用,请将此参数的值设置为 |
||||||
scope |
必需
答 空格分隔 范围列表,用于标识您的应用可以在 。这些值会告知 Google 向 用户。 范围让您的应用可以仅请求访问所需的资源 同时让用户能够控制他们向您的网页授予 应用。因此,所请求的范围数量与 以及征得用户同意的可能性 |
||||||
code_challenge |
建议
指定将用作服务器端的编码 |
||||||
code_challenge_method |
建议
指定用于对将要使用的 |
||||||
state |
建议
指定应用用来维持
授权请求和授权服务器的响应。
服务器返回您作为 此参数有多种用途,例如将用户定向到
您应用中的正确资源、发送 Nonce 以及缓解跨网站请求
。由于您的 |
||||||
login_hint |
可选
如果您的应用知道哪个用户正在尝试进行身份验证,则可以使用此参数 ,以便向 Google 身份验证服务器提供提示。服务器会使用该提示 简化登录流程:在登录表单中预先填写电子邮件地址字段 选择相应的多登录会话。 将该参数值设为电子邮件地址或 |
授权网址示例
以下标签页显示了不同重定向 URI 选项的授权网址示例。
除了 redirect_uri
参数的值外,这些网址完全相同。网址
还包含必需的 response_type
和 client_id
参数
作为可选的 state
参数。每个网址都包含换行符和空格,
可读性。
自定义 URI scheme
https://accounts.google.com/o/oauth2/v2/auth? scope=email%20profile& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=com.example.app%3A/oauth2redirect& client_id=client_id
环回 IP 地址
https://accounts.google.com/o/oauth2/v2/auth? scope=email%20profile& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=http%3A//127.0.0.1%3A9004& client_id=client_id
第 3 步:Google 提示用户同意
在此步骤中,用户可决定是否授予您的应用所请求的访问权限。目前 阶段,Google 会显示一个意见征求窗口,其中会显示您的应用名称和 Google API 它请求权限的那些服务,可以使用用户的授权凭据 要授予的访问权限范围的摘要。通过 然后,用户可以同意授予对您的应用请求的一个或多个范围的访问权限,或者 拒绝请求
在此阶段,您的应用无需进行任何操作,因为它会等待来自 Google 的 OAuth 2.0 服务器,指示是否已授予任何访问权限。该回答在 。
错误
向 Google 的 OAuth 2.0 授权端点发送的请求可能会显示面向用户的错误消息 而不是预期的身份验证和授权流程。常见错误代码和建议 分辨率。
admin_policy_enforced
由于以下政策,该 Google 账号无法对所请求的一个或多个范围进行授权 Google Workspace 管理员。参阅 Google Workspace 管理员帮助文章 您可以控制哪些第三方和内部应用访问 Google Workspace 数据 ,详细了解管理员如何限制对所有范围或敏感 限制范围,直到明确授予对 OAuth 客户端 ID 的访问权限。
disallowed_useragent
授权端点显示在 Google 禁止的嵌入式用户代理中。 OAuth 2.0 政策。
Android
Android 开发者在以下位置打开授权请求时可能会遇到此错误消息:
android.webkit.WebView
。
开发者应该改用 Android 库,如
适用于 Android 的 Google 登录或 OpenID Foundation 的
适用于 Android 的 AppAuth。
当 Android 应用在 用户从 Google 的 OAuth 2.0 授权端点转到 Google 的 OAuth 2.0 授权端点, 。开发者应该允许在 操作系统,其中包括 Android 应用链接 处理程序或默认浏览器应用。通过 Android 自定义标签页 也是一个受支持的选项。
iOS
iOS 和 macOS 开发者在以下位置打开授权请求时可能会遇到此错误:
WKWebView
。
开发者应该改用 iOS 库,如
iOS 版 Google 登录或 OpenID Foundation 的
适用于 iOS 的 AppAuth。
当 iOS 或 macOS 应用在以下位置打开常规网页链接时,Web 开发者可能会遇到此错误
嵌入的用户代理,而用户从 Google 的 OAuth 2.0 授权端点
。开发者应该允许在
操作系统,其中包括
通用链接
处理程序或默认浏览器应用。通过
SFSafariViewController
也是一个受支持的选项。
org_internal
请求中的 OAuth 客户端 ID 属于某个项目 具体 Google Cloud Organization(Google Cloud 组织)。 有关此配置选项的详细信息,请参阅 用户类型 部分。
invalid_grant
如果您使用的是
代码验证程序和
验证,则 code_callenge
参数无效或缺失。请确保
code_challenge
参数设置正确。
刷新访问令牌时,令牌可能已过期或 已失效。 再次对用户进行身份验证,并请求用户同意以获取新令牌。如果您选择继续 请确定您的应用已正确配置, 在请求中使用正确的令牌和参数。否则,该用户账号可能具有 已被删除或停用。
redirect_uri_mismatch
授权请求中传递的 redirect_uri
与已获授权的
OAuth 客户端 ID 的重定向 URI。请在以下位置查看已获授权的重定向 URI:
Google API Console Credentials page。
传递的 redirect_uri
对于客户端类型可能无效。
redirect_uri
参数可以是指具有以下特征的 OAuth 带外 (OOB) 流程:
已弃用,不再受支持。请参阅
迁移指南,更新您的
集成。
invalid_request
您提出的请求出了点问题。造成这种情况的原因有很多:
- 该请求的格式不正确
- 请求缺少必需的参数
- 请求使用的授权方法不受 Google 支持。验证您的 OAuth 集成使用推荐的集成方法
- 重定向 URI 使用自定义架构:如果您看到错误消息 Chrome 应用不支持自定义 URI 架构或自定义 URI 架构 未启用,则表示您使用的是自定义 URI 该协议在 Chrome 应用中不受支持,且在 Chrome 中默认处于停用状态 Android。详细了解自定义 URI scheme 替代方案
第 4 步:处理 OAuth 2.0 服务器响应
您的应用接收授权响应的方式取决于
重定向 URI scheme。无论什么方案,
响应将包含授权代码 (code
) 或错误
(error
).例如,error=access_denied
表示用户
拒绝了请求。
如果用户授予应用程序的访问权限,您就可以将授权代码换成 访问令牌和刷新令牌,如下一步所述。
第 5 步:交换用于刷新和访问的授权代码 词元
要使用授权代码换取访问令牌,请调用
https://oauth2.googleapis.com/token
端点,并设置以下参数:
字段 | |
---|---|
client_id |
从 API Console获取的客户 ID Credentials page。 |
client_secret |
从 API Console获取的客户端密钥 Credentials page。 |
code |
从初始请求返回的授权代码。 |
code_verifier |
您创建的代码验证程序 第 1 步: |
grant_type |
如 OAuth 2.0 中所定义,
规范,则必须将此字段的值设置为 authorization_code 。 |
redirect_uri |
在
API Console
Credentials page 指定
client_id 。 |
以下代码段显示了一个示例请求:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& client_secret=your_client_secret& redirect_uri=http://127.0.0.1:9004& grant_type=authorization_code
Google 通过返回包含短期访问的 JSON 对象来响应此请求 令牌和刷新令牌
响应包含以下字段:
字段 | |
---|---|
access_token |
您的应用为授权 Google API 请求而发送的令牌。 |
expires_in |
访问令牌的剩余生命周期(以秒为单位)。 |
id_token |
注意:仅当您的请求包含身份范围时,系统才会返回此属性。
例如 openid 、profile 或 email 。该值为
JSON Web 令牌 (JWT),包含
用户。 |
refresh_token |
可用于获取新访问令牌的令牌。刷新令牌有效期至 用户撤消访问权限。 请注意,始终为已安装的应用返回刷新令牌。 |
scope |
access_token 授予的访问权限范围,表示为
用空格分隔、区分大小写的字符串。 |
token_type |
返回的令牌类型。目前,此字段的值始终设置为
Bearer 。 |
以下代码段显示了一个示例响应:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/drive.metadata.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
调用 Google API
在您的应用获得访问令牌后,您就可以使用该令牌调用 Google
代表指定的
用户账号(如果已授予 API 所需的访问权限范围)。为此,请添加
通过添加 access_token
查询来获取对 API 的请求中的访问令牌
参数或 Authorization
HTTP 标头 Bearer
值。如有可能,
最好使用 HTTP 标头,因为查询字符串通常显示在服务器日志中。大多数
可以使用客户端库来设置对 Google API 的调用(例如,
调用 Drive Files API)。
您可以访问以下网址,试用所有 Google API 并查看其作用域: OAuth 2.0 Playground。
HTTP GET 示例
对
drive.files
端点(Drive Files API),同时使用 Authorization: Bearer
HTTP
可能如下所示。请注意,您需要指定自己的访问令牌:
GET /drive/v2/files HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
以下是使用 access_token
为经过身份验证的用户对同一 API 的调用
查询字符串参数:
GET https://www.googleapis.com/drive/v2/files?access_token=access_token
curl
示例
您可以使用 curl
命令行应用测试这些命令。这里有
使用 HTTP 标头选项的示例(首选):
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files
或者,也可以使用查询字符串参数选项:
curl https://www.googleapis.com/drive/v2/files?access_token=access_token
刷新访问令牌
访问令牌会定期过期,并成为相关 API 请求的无效凭据。您 可以在不提示用户授予权限的情况下刷新访问令牌(包括在用户 不存在)。
为了刷新访问令牌,您的应用会发送 HTTPS POST
向 Google 的授权服务器 (https://oauth2.googleapis.com/token
) 发送请求,
包含以下参数:
字段 | |
---|---|
client_id |
从 API Console获取的客户端 ID。 |
client_secret |
从 API Console获取的客户端密钥。
(client_secret 不适用于注册为
Android、iOS 或 Chrome 应用)。
|
grant_type |
如
OAuth 2.0 规范中发现的问题,
此字段的值必须设置为 refresh_token 。 |
refresh_token |
从授权代码交换返回的刷新令牌。 |
以下代码段显示了一个示例请求:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& client_secret=your_client_secret& refresh_token=refresh_token& grant_type=refresh_token
只要用户尚未撤消授予应用的访问权限,令牌服务器就会 会返回一个包含新访问令牌的 JSON 对象。以下代码段展示了一个示例 回答:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly", "token_type": "Bearer" }
请注意,发出的刷新令牌有数量限制;每个上限 客户/用户组合,以及另一个针对所有客户端的每位用户。您应该保存刷新令牌 ,只要它们保持有效状态,就可以继续使用。如果您的应用 请求过多刷新令牌,可能会受到这些限制,在这种情况下,较旧的刷新令牌 将停止运行。
撤消令牌
在某些情况下,用户可能希望撤消授予应用的访问权限。用户可以撤消访问权限 通过访问 账号设置。请参阅 删除 第三方网站和应用的“网站或应用访问权限”部分有权访问您账号的应用 支持文档。
应用也有可能以编程方式撤消授予其的访问权限。 如果用户退订、移除 或者应用所需的 API 资源发生了显著变化。也就是说, 移除流程的必要步骤可能包括 API 请求, 授予该应用的权限。
要以编程方式撤销令牌,您的应用会向
https://oauth2.googleapis.com/revoke
,并以参数的形式添加令牌:
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \ https://oauth2.googleapis.com/revoke?token={token}
令牌可以是访问令牌,也可以是刷新令牌。如果令牌是访问令牌,且具有 相应的刷新令牌,相应刷新令牌也会被撤消。
如果成功处理了吊销请求,那么响应的 HTTP 状态代码就是
200
。对于错误情况,系统会随同返回 HTTP 状态代码 400
以及错误代码。
延伸阅读
IETF 现行最佳做法 OAuth 2.0 for 原生应用确立了本文中介绍的许多最佳实践。
实施跨账号保护
您应采取的额外措施来保护用户的个账号实现了跨账号功能 利用 Google 的跨账号保护服务进行保护。通过这项服务 订阅安全事件通知,这些通知可向您的应用提供 关于用户账号的重大变化然后,您可以根据这些信息 您决定如何响应事件。
下面列举了一些示例来说明 Google 的跨账号保护服务发送到您应用的事件类型:
-
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
-
https://schemas.openid.net/secevent/oauth/event-type/token-revoked
-
https://schemas.openid.net/secevent/risc/event-type/account-disabled
请参阅 使用“跨账号保护”页面保护用户账号 。