2017-10-05 140 views
0

我的问题已经回答了约90%,在以下问题:
How to get the refresh token with Google OAuth2 Javascript library?如何在纯客户端应用程序中从Google OAuth 2.0 API刷新access_token?

我有一个客户端JS的Web应用程序。在这个应用程序中,我想使用Google API。为此,我需要每小时刷新一次access_token,但没有会一次又一次向用户显示Google登录屏幕。目前没有服务器端代码,我想避免服务器端代码,因此我的应用程序更具可移植性(例如Electron)。

这意味着我有的唯一可能性就是上面链接问题中答案的选项二。它说:

让你的客户只需要访问令牌,因为它需要它们。设置immediate=true,以便与用户没有可见的交互。

我通过两个单证看:Google API Client LibraryGoogle Identity Platform(这是多数民众赞成在后台被使用的客户端库直接的OAuth 2.0终点)。

我找不到一个叫做immediate的选项。但是这个问题告诉我应该可以在纯粹的客户端Web应用程序中刷新access_token,但不使用refresh_token。但是如何?

此外,我完全希望避免使用客户端库,因为它很难与基于webpack的项目集成在一起......所以我主要关注HTTP请求再次访问OAuth端点应该是什么样子。

编辑:固定链接错误

回答

0

您链接到答案指的是客户端库的早期版本。目前的版本记录在https://developers.google.com/identity/protocols/OAuth2UserAgent和我相信(NB未测试)相当于immediate=trueprompt=none

+0

这似乎是可能的,这就是我正在寻找。 ''.grantOfflineAccess()'方法还有什么特别的地方。现在我需要找出有什么不同,一旦我确切知道我需要哪一个,从HTTP的角度来看,我可以自己实现它。非常感谢。 –

+0

grantOfflineAccess旨在与服务器认证流程结合使用。如果你正在寻找一个纯粹的JS /浏览器解决方案,grantOfflineAccess是不是。我在https://github.com/google/google-api-javascript-client/issues/232上看到了一则评论,“然而,由于GSI v2会照顾缓存和令人耳目一新的令牌”,所以它可能是图书馆所做的为你工作。 – pinoyyid

+0

我现在自己打开了一个问题:https://github.com/google/google-api-javascript-client/issues/343在那里,我基本上被告知同样的事情。它只是:令牌的自动刷新似乎不起作用。问题中列出了更多细节。 –

相关问题