69

我们有一个独立的 Java 应用程序(参见“已安装的应用程序”),它定期运行并使用 Google API(从客户数据库/ldap/...更新一些信息)。

为了访问 Google API,我们将用户名和密码存储在配置文件中,这是一个安全风险,客户不喜欢这样。所以我们想改用 OAuth2 长寿命访问令牌

Google OAuth2 访问令牌的默认到期时间是多少?

由于我们在应用程序中只有访问令牌,因此当访问令牌过期时,应用程序本身无法刷新它。

我个人认为在这种情况下 OAuth2 实施不会带来任何重大好处,但让我们关注主要问题 - 默认到期时间。

4

2 回答 2

125

您不应该根据访问令牌的特定生命周期来设计您的应用程序。假设它们(非常)短命。

但是,在成功完成 OAuth2 安装应用程序流程后,您将获得一个刷新令牌。此刷新令牌永不过期,您可以根据需要使用它来交换访问令牌。保存刷新令牌,并使用它们按需获取访问令牌(应立即用于访问用户数据)。

编辑:尽管上面有我的评论,有两种简单的方法可以获取访问令牌到期时间:

  1. expires_in当您交换刷新令牌(使用 /o/oauth2/token 端点)时,它是响应 ( ) 中的一个参数。更多细节。
  2. 还有一个 API 可以返回 access_token 的剩余生命周期:

    https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= {accessToken}

    这将返回一个包含expires_in参数的 json 数组,该参数是令牌生命周期中剩余的秒数。

于 2012-12-13T02:00:44.163 回答
6

google oauth2 访问令牌的默认到期日期为 1 小时。expiry_date 以 Unix 纪元时间为单位,以毫秒为单位。如果你想以人类可读的格式阅读它,那么你可以在这里简单地检查它.. Unix 时间戳到人类可读的时间

于 2017-08-27T11:53:29.970 回答