我有访问令牌,它在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来获取刷新令牌。您能否建议我增加访问令牌时间段的最佳选择?
答案 0 :(得分:0)
摘自Javadoc(我的重点):
public Credential setExpiresInSeconds(java.lang.Long expiresIn)
设置访问令牌的生存期(以秒为单位)(例如3600表示一个小时),或者将其设置为null(无)。
仅出于调用超级实现和更改返回类型的目的而支持覆盖,而没有其他目的。
访问令牌由Google提供,可让您访问API。如果您可以更改到期时间,就不会有太多的安全性。