Как увеличить срок действия токена доступа? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть токен доступа, срок его действия истекает в течение 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"); 

Iхотите, чтобы у моего маркера доступа было больше время истечения.Я разрабатываю настольное приложение и не могу использовать URL для получения токена обновления, потому что у меня уже есть redirect_uri.Подскажите, пожалуйста, какой будет лучший вариант увеличения периода доступа токена?

1 Ответ

0 голосов
/ 20 июня 2019

Из Javadoc (мой акцент):

public Credential setExpiresInSeconds(java.lang.Long expiresIn)

Устанавливает время жизни в секундах токена доступа (например, 3600 для часа) или ноль для нуля.

Переопределение поддерживается только с целью вызова супер-реализации и изменения типа возвращаемого значения, но не более.

Маркер доступа предоставлен Google для предоставления вам доступа к API. Там не будет много безопасности, если бы вы могли изменить время истечения, не так ли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...