我们有一个独立的Java应用程序(请参阅'Installed application':https://developers.google.com/accounts/docs/OAuth2),它定期运行并使用谷歌API(从客户数据库/ ldap / ...更新一些信息) .
要访问Google API,我们会在配置文件中存储用户名和密码,这是一种安全风险,客户不喜欢这样做 . 因此,我们希望使用OAuth2长期访问令牌 .
what`s default expiration time for Google OAuth2 access tokens ?
由于我们在应用程序中只有访问令牌,因此当访问令牌到期时,应用程序本身无法刷新它...
我个人认为在这种情况下OAuth2的实现不会带来任何重大好处,但让我们关注主要问题 - 默认的到期时间 .
3 回答
您不应该根据访问令牌的特定生命周期来设计您的应用程序 . 假设他们(非常)短暂 .
但是,在成功完成OAuth2安装的应用程序流程后,您将获得刷新令牌 . 此刷新令牌永不过期,您可以根据需要使用它来交换访问令牌 . 保存刷新令牌,并使用它们按需访问令牌(然后应立即用于访问用户数据) .
编辑:尽管我上面的评论,有两种简单的方法来获取访问令牌到期时间:
当您更换刷新令牌(使用/ o / oauth2 / token endpoints )时,它是响应中的参数(
expires_in
) . More details.还有一个API可以返回access_token的剩余生命周期:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
这将返回一个包含
expires_in
参数的json数组,该参数是令牌生命周期中剩余的秒数 .Google oauth2访问令牌的默认expiry_date为1小时 . expiry_date在Unix纪元时间内以毫秒为单位 . 如果您想以人类可读的格式阅读,那么您可以在这里查看.. Unix timestamp to human readable time
以下是对Google访问令牌到期问题的进一步观察 . 我有一台使用Google Oauth2的服务器,它使用 endpoints
https://www.googleapis.com/oauth2/v3/userinfo?access_token=YOUR_ACCESS_TOKEN
进行第一级身份验证 . 我've found is that used in this way, the access token has a much longer duration of life than 60 minutes. I'我不确定它只会以这种方式使用时到期 .有没有人见过以这种方式使用的访问令牌的到期时间的文件?