【发布时间】:2019-06-19 23:22:01
【问题描述】:
我有访问令牌,它会在 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");
我希望我的访问令牌有更长的到期时间。我正在开发桌面应用程序,但我无法使用 url 来获取刷新令牌,因为我完成了 redirect_uri。您能否建议我增加访问令牌的时间段的最佳选择?
【问题讨论】:
标签: java google-api-java-client