Google API:如何增加访问令牌到期日期?

Posted

技术标签:

【中文标题】Google API:如何增加访问令牌到期日期?【英文标题】:Google API: How to increase access token expiration date? 【发布时间】:2018-11-19 16:48:20 【问题描述】:

Google API 到期日期是 1 小时,问题是我使用 API 是为了允许用户使用管理 SDK 功能(列出组、将成员添加到组等)

没有人可以在一小时内完成任何一项操作,这需要用户每天多次登录他们的帐户来管理他们的群组。如果您只想使用 Google 对用户进行身份验证,则 1 小时的到期日期是不错的选择。

如何增加或有任何解决方法?我错过了什么吗?

【问题讨论】:

【参考方案1】:

出于安全原因,您无法更改访问令牌的有效期。但是,如果您请求离线访问与令牌关联的范围,则可以refresh an access token 而不提示用户许可。

如果您使用 Google API 客户端库,只要您将该对象配置为离线访问,client object 就会根据需要刷新访问令牌。 如果不使用客户端库,则需要在redirecting the user to Google's OAuth 2.0 server 时将access_type HTTP 查询参数设置为offline。在这种情况下,当您exchange an authorization code 获取访问令牌时,Google 的授权服务器会返回一个刷新令牌。然后,如果访问令牌过期(或在任何其他时间),您可以使用刷新令牌来获取新的访问令牌。

【讨论】:

如果我只是这样做$client->setAccessType('offline')like 这里developers.google.com/admin-sdk/directory/v1/quickstart/php,一切都应该正常吗? 我可以在应用程序的其他部分使用令牌吗?假设我将它存储在 mysql 中,它过期了,然后用户决定从现在开始 4 小时访问应用程序,我使用存储在我的数据库中的令牌调用谷歌的客户端,它是否识别出它是一个旧令牌并刷新它? $client->setAccessType('offline') 应该可以工作。用户授予对请求范围的离线访问权限后,您可以在用户离线时继续使用 API 客户端代表用户访问 Google API。客户端对象将根据需要刷新访问令牌。

以上是关于Google API:如何增加访问令牌到期日期?的主要内容,如果未能解决你的问题,请参考以下文章

net core api 是不是检查每个请求的 jwt 到期日期? [复制]

ASP.NET Web API 授权令牌提前到期

我们是不是应该在很大程度上基于本地 jwt 令牌到期日期来验证用户

JWT Auth 和 Satellizer - 增加移动应用程序的到期令牌时间

为什么访问令牌会过期?

google oauth refresh token 长寿命解决方案