如何验证Google身份验证访问令牌?
我需要以某种方式查询Google并询问:[给定的访问令牌]是否适用于[example@example.com] Google帐户?
简短版本
通过Google身份验证API :: Web应用程序的OAuth身份验证提供的访问令牌可以用于从一系列Google服务请求数据。但是,如何检查给定访问令牌是否适用于给定的Google帐户尚不清楚。我想知道如何做到这一点。
详细版本
我正在开发一个使用基于令牌的身份验证的API。在提供有效的用户名+密码或从任意一个可验证的第三方服务中提供第三方令牌之后,将返回一个令牌。
其中之一的第三方服务将是Google,允许用户使用其Google帐户对我的服务进行身份验证。稍后,这将扩展到包括Yahoo帐户、可信OpenID提供商等。
基于Google的访问示例:
'API'实体完全由我控制。'公共接口'实体是任何基于Web或桌面的应用程序。有些公共接口在我控制之下,其他的则不在我的控制之下,还有一些我可能永远都不会知道。
因此,在步骤3中,我无法信任提供给API的令牌。这将与相应的Google帐户电子邮件地址一起提供。
我需要以某种方式查询Google并询问:这个访问令牌是否适用于example@example.com?
在这种情况下,example@example.com是Google帐户的唯一标识符 - 某人用来登录其Google帐户的电子邮件地址。不能假设这是一个Gmail地址 - 某人可以拥有一个Google帐户而没有Gmail帐户。
谷歌文档清晰地说明了如何使用访问令牌从多个谷歌服务中检索数据。但似乎没有说明如何首先检查给定的访问令牌是否有效。
更新 该令牌对 N 个谷歌服务有效。我无法尝试针对谷歌服务验证令牌,因为我不知道一个特定用户实际使用的所有谷歌服务的子集。
此外,我永远不会使用谷歌认证访问令牌来访问任何谷歌服务,仅仅作为验证所谓谷歌用户实际上就是他们所说的那个人的手段。如果有其他方法可以做到这一点,我很乐意尝试。