如何验证Google身份验证API访问令牌?

190

如何验证Google身份验证访问令牌?

我需要以某种方式查询Google并询问:[给定的访问令牌]是否适用于[example@example.com] Google帐户?

简短版本

通过Google身份验证API :: Web应用程序的OAuth身份验证提供的访问令牌可以用于从一系列Google服务请求数据。但是,如何检查给定访问令牌是否适用于给定的Google帐户尚不清楚。我想知道如何做到这一点。

详细版本

我正在开发一个使用基于令牌的身份验证的API。在提供有效的用户名+密码或从任意一个可验证的第三方服务中提供第三方令牌之后,将返回一个令牌。

其中之一的第三方服务将是Google,允许用户使用其Google帐户对我的服务进行身份验证。稍后,这将扩展到包括Yahoo帐户、可信OpenID提供商等。

基于Google的访问示例:

alt text

'API'实体完全由我控制。'公共接口'实体是任何基于Web或桌面的应用程序。有些公共接口在我控制之下,其他的则不在我的控制之下,还有一些我可能永远都不会知道。

因此,在步骤3中,我无法信任提供给API的令牌。这将与相应的Google帐户电子邮件地址一起提供。

我需要以某种方式查询Google并询问:这个访问令牌是否适用于example@example.com

在这种情况下,example@example.com是Google帐户的唯一标识符 - 某人用来登录其Google帐户的电子邮件地址。不能假设这是一个Gmail地址 - 某人可以拥有一个Google帐户而没有Gmail帐户。

谷歌文档清晰地说明了如何使用访问令牌从多个谷歌服务中检索数据。但似乎没有说明如何首先检查给定的访问令牌是否有效。

更新 该令牌对 N 个谷歌服务有效。我无法尝试针对谷歌服务验证令牌,因为我不知道一个特定用户实际使用的所有谷歌服务的子集。

此外,我永远不会使用谷歌认证访问令牌来访问任何谷歌服务,仅仅作为验证所谓谷歌用户实际上就是他们所说的那个人的手段。如果有其他方法可以做到这一点,我很乐意尝试。


这个问题是关于哪种特定的身份验证服务(OAuth、AuthSub、已安装的应用程序等)?请提供更详细的链接。 - Martin v. Löwis
@Martin v. Löwis:'Web应用程序的OAuth身份验证'服务-我已更新问题的开头以反映这一点。谢谢你指出这个问题! - Jon Cram
有趣的一篇关于 Google 钥匙验证的文章,或许可以更深入地了解一下:http://groups.google.com/group/Google-Maps-API/msg/f9e3c5ad3cbda4d7 - dotjoe
请注意:即使没有https,图像URL也是404。 - General Grievance
12个回答

0

尝试使用您的令牌进行OAuth身份验证请求https://www.google.com/accounts/AuthSubTokenInfo。虽然只有AuthSub文档中有记录,但它也适用于OAuth。它不会告诉您令牌属于哪个用户,但它会告诉您它适用于哪些服务,并且如果令牌无效或已被撤销,则请求将失败。


-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接