如何增加访问令牌的到期时间?

时间:2019-06-19 23:22:01

标签: java google-api-java-client

我有访问令牌,它在1个小时内到期,但是我希望它能工作得更多,因此我使用setExpiresInSeconds()方法设置时间以及何时使用getExpiresInSeconds()检索值。它显示了我添加的时间,但是即使我保留的时间超过1小时,访问令牌也会在1小时内过期。

GoogleCredential googleCred = GoogleCredential.fromStream(serviceAccount);

            HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
            JacksonFactory jsonFactory = new JacksonFactory();
              Set<String> scopes = new HashSet<String>();        
                scopes.add(DirectoryScopes.ADMIN_DIRECTORY_USER);
                scopes.add(DirectoryScopes.ADMIN_DIRECTORY_GROUP);
                scopes.add(DirectoryScopes.ADMIN_DIRECTORY_GROUP_MEMBER);

            GoogleCredential credentialWithUser = new GoogleCredential.Builder()
                    .setTransport(httpTransport)
                    .setJsonFactory(jsonFactory)
                    .setServiceAccountUser(SERVICE_ACCOUNT_USER)  // <--- mail of domain's admin
                    .setServiceAccountId(googleCred.getServiceAccountId())
                    .setServiceAccountScopes(scopes)
                    .setServiceAccountPrivateKey(googleCred.getServiceAccountPrivateKey())
                    .setServiceAccountPrivateKeyId(googleCred.getServiceAccountPrivateKeyId())  
                    .setTokenServerEncodedUrl(googleCred.getTokenServerEncodedUrl()).build();                     

          // Use the Google credential to generate an access token

          credentialWithUser.refreshToken();
          credentialWithUser.setExpiresInSeconds(5000l);    
          token = credentialWithUser.getAccessToken();
          log.info("getAccessToken()  access token value  : " + token );
          String lifeSpan = credentialWithUser.getExpiresInSeconds().toString();
          log.info("getAccessToken()  access token lifespan in second  : " + lifeSpan + "sec"); 

我希望访问令牌具有更长的到期时间。我正在开发桌面应用程序,由于无法完成redirect_uri,所以无法使用url来获取刷新令牌。您能否建议我增加访问令牌时间段的最佳选择?

1 个答案:

答案 0 :(得分:0)

摘自Javadoc(我的重点):

public Credential setExpiresInSeconds(java.lang.Long expiresIn)
     

设置访问令牌的生存期(以秒为单位)(例如3600表示一个小时),或者将其设置为null(无)。

     

仅出于调用超级实现和更改返回类型的目的而支持覆盖,而没有其他目的。

访问令牌由Google提供,可让您访问API。如果您可以更改到期时间,就不会有太多的安全性。