如何验证 Google 认证访问令牌?
我需要以某种方式查询谷歌并问: [给定的访问令牌]对[ example@example.com ]谷歌帐户有效吗?
很明显,通过 GoogleAuthenticationApi: : OAuth Web 应用程序身份验证提供的访问令牌可以用来从一系列 Google 服务请求数据。目前还不清楚如何检查给定的访问令牌是否对给定的谷歌帐户有效。我想知道是怎么回事。
我正在开发一个使用基于令牌的认证的 API。如果提供了有效的用户名 + 密码,或者提供了来自任何一个 N可验证服务的第三方令牌,则将返回令牌。
第三方服务之一将是谷歌,允许用户使用他们的谷歌帐户对我的服务进行身份验证。这将在以后扩展到包括雅虎帐户、可信的 OpenID 提供商等等。
基于 Google 的访问示例:
“ API”实体在我的完全控制之下。“公共界面”实体是任何基于网络或桌面的应用程序。有些公共接口在我的控制之下,有些不在,还有些我可能永远都不会知道。
因此,我不能信任步骤3中提供给 API 的令牌。这将与相应的谷歌帐户电子邮件地址一起提供。
我需要以某种方式查询谷歌和问: 这个访问令牌对 example@example.com 有效吗?
在这种情况下,example@example.com 是谷歌帐户唯一标识符——用户登录谷歌帐户时使用的电子邮件地址。这不能被认为是一个 Gmail 地址-有人可以有一个谷歌帐户没有 Gmail 帐户。
Google 文档清楚地说明了如何使用访问令牌从许多 Google 服务中检索数据。似乎没有说明如何首先检查给定的访问令牌是否有效。
更新 令牌对 N 个 Google 服务有效。我不能用令牌来验证 Google 服务,因为我不知道给定用户实际使用的 Google 服务的哪个子集。
此外,我将永远不会使用谷歌认证访问令牌来访问任何谷歌服务,仅仅作为一种手段来验证假定的谷歌用户实际上是谁,他们说他们是谁。如果还有别的方法,我很乐意尝试。