我正在使用带有redirect_uri选项的Google身份验证(以避免弹出窗口)。当用户登录Chrome时,我可以获得访问令牌,但是在Safari中(例如),我不知道如何获取访问令牌。重定向查询字符串包含一个id_token,我可以使用此端点成功验证它:
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123
这给了我一些有关用户的信息,但是我真正想要的是一个访问令牌,因为我的后端API期望它。
我可以从id_token获取访问令牌吗?如果是这样,怎么做。我找不到任何例子。
说明:我不是要验证我的应用,而是从前端通过Google登录进行身份验证的用户获取id_token。
答案 0 :(得分:0)
仅对用户进行身份验证
如果您不使用Google API,而仅使用令牌对用户进行身份验证,则应仅验证id_token
而不使用访问令牌。 id_token
是一个OpenID Connect概念,用于通知客户端(您的应用程序)有关当前登录用户的一些基本信息。
要验证id_token
,您可以use the documentation在Stackoverflow上描述尽可能多的内容或this related question。
代表您的用户使用Google API
但是,如果您想使用用户名使用Google API,则需要access_token
,因为id_token
通常不用于后端身份验证。为了获得访问令牌,用户需要授权您的应用程序才能代表他们访问Google API。如果您使用的是gapi
库,则对Google API的调用过程可能大部分被隐藏了,但是它应该在某处具有访问令牌。
此Google文档描述了幕后发生的事情。
https://developers.google.com/identity/protocols/OAuth2
如果您要代表后端用户访问Google API,则可能必须遵循与前端所用过程不同的过程。授权请求中的响应类型定义使用哪个进程(这就是为什么我问使用哪种响应类型的原因)。但是gapi npm软件包背后的Javascript库似乎支持它,尽管使用它的方式可能不容易访问。
还签出离线选项,也许这就是您想要的?如果这样做没有帮助,您仍然可以检出我之前参考的Oauth2文档页面,以获取指向其他选项/其他语言的链接以获取身份验证令牌。