Мне нужно вызвать пользовательский API Google, поэтому мне нужна аутентификация Oauth для его вызова. Но когда я установил access_type
на offline
, Google не вернул мне refresh_token
. Таким образом, мой access_token истечет через час, и он не будет автоматически обновлять sh. Это мой сгенерированный код:
List<String> array = new ArrayList<>();
array.add("https://www.googleapis.com/auth/androidworkzerotouchemm");
InputStream in = CustomerQuickstart.class.getResourceAsStream("/9443.json");
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), new InputStreamReader(in, "UTF-8"));
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), clientSecrets, array)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(
System.getProperty("user.home"), ".9443/zero-touch.quickstart.json")))
.setAccessType("offline")
.build();
Credential credential = new AuthorizationCodeInstalledApp(
flow, new CodeReceiver("https://xxxxxxx.com/dacc/manager/device/zerotouch/active")).authorize("userId");
В учетных данных нет refresh_token access_token