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