Security OAuth2和Google API:访问令牌过期时间?

Security OAuth2和Google API:访问令牌过期时间?,security,google-api,oauth-2.0,google-api-java-client,google-oauth,Security,Google Api,Oauth 2.0,Google Api Java Client,Google Oauth,我们有一个独立的Java应用程序(请参阅),它定期运行并使用GoogleAPI(从客户数据库/ldap/更新一些信息) 为了访问谷歌API,我们将用户名和密码存储在配置文件中,这是一种安全风险,客户不喜欢这样。因此,我们希望使用OAuth2 long living访问令牌 谷歌OAuth2访问令牌的默认过期时间是多少? 由于应用程序中只有访问令牌,所以当访问令牌过期时,应用程序本身无法刷新它 我个人认为,在这种情况下,OAuth2实现不会带来任何重大好处,但让我们关注主要问题——默认过期时间 您

我们有一个独立的Java应用程序(请参阅),它定期运行并使用GoogleAPI(从客户数据库/ldap/更新一些信息)

为了访问谷歌API,我们将用户名和密码存储在配置文件中,这是一种安全风险,客户不喜欢这样。因此,我们希望使用OAuth2 long living访问令牌

谷歌OAuth2访问令牌的默认过期时间是多少?

由于应用程序中只有访问令牌,所以当访问令牌过期时,应用程序本身无法刷新它


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

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

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

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

  • 当您交换刷新令牌(使用/o/oauth2/token端点)时,它是响应(
    expires\u in
    )中的一个参数
  • 还有一个API返回access_令牌的剩余生存期:

    {accessToken}

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


  • google oauth2访问令牌的默认到期日为1小时。到期日在Unix历元时间内(以毫秒为单位)。如果您想以人类可读的格式阅读此内容,那么您只需在此处检查即可。

    因此,我只需要在第一次自动化时使用客户端机密,然后在我获得访问权限并刷新令牌应用程序后使用access@martin85嗯,这涉及多个步骤。首先获取授权码,然后将授权码交换为刷新令牌(这里是使用客户机密码的地方)。拥有刷新令牌后,可以将其交换为访问令牌。只有在您获取刷新令牌时,才会向用户显示web UI(您必须获得用户的批准才能访问其数据)。之后,流不需要涉及用户。@martin85是的,您可以使用OAuth2流绕过用户UI,前提是您的应用程序可以访问API。请参阅问题以获取谷歌分析API示例。您必须将accessType设置为“脱机”才能获得刷新token@Internial目前,谷歌访问令牌的TTL为1小时。