Для того чтобы программа java могла получить доступ к моему приводу Google, мне нужно создать oauth2.Credential, используя файл учетных данных json (см. https://console.developers.google.com) для получения токена доступа.Получить авторизацию от браузера java от браузера браузера за запросом уже предоставленного разрешения
Проблема заключается в том, когда я создаю CREDENTIAL экземпляру Java программы Java с открытым Internet Explorer и попросить разрешения на диск.
Credential credential = new AuthorizationCodeInstalledApp(flow
, new LocalServerReceiver())
.authorize("user")
;
Если я нажимаю кнопку "Разрешить", Credential создается, и я получаю жетон.
System.out.println("token" + credential.getAccessToken());
Проблема заключается в том, что эта ява программа будет пакетная программа, поэтому мы не можем попросить партии нажать на кнопку.
Кроме того, в https://security.google.com/settings/security/permissions?pli=1 мой привод уже получил доступ к моему заявлению (имя приложения GoogleTest) ...
Вы знаете, как получить данные без ява программы открытого браузера для спросясь ? Спасибо
Вот полный код:
public static void getToken() {
HttpTransport httpTransport ;
InputStream inputStream;
try {
httpTransport = GoogleNetHttpTransport.newTrustedTransport();
List<String> scope = Arrays.asList(DriveScopes.DRIVE);
inputStream = new FileInputStream("C:/dev/ws/mainAzure/GoogleTest/res/client_secret_jcb_inst.json");
InputStreamReader reader = new InputStreamReader(inputStream);
clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,reader);
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport
, JSON_FACTORY
,clientSecrets
, scope)
.setAccessType("offline")
.setApprovalPrompt("force")
.build();
//Browser open when there is new AuthorizationCodeInstalledApp(...)
Credential credential = new AuthorizationCodeInstalledApp(flow
, new LocalServerReceiver())
.authorize("user")
;
System.out.println("token" + credential.getAccessToken());
} catch (Exception e) {
e.printStackTrace();
}
}
Спасибо за ваш ответ, но Цель состоит в том, чтобы иметь доступ к данным из Google Drive без ручного вмешательства, вводя токена доступа. Я ищу решение для этого. Считаете ли вы, что невозможно получить токен автоматически? –
Посмотрите вложенный поток приложений для Google Api.я думаю, что это то, что вам нужно –
Операция должна выполняться только один раз при установке программы, после того, как токен обновления будет сохранен, его снова не будет запрашивать, пакет будет использовать токен обновления, чтобы снова получить новый токен доступа и еще раз. – Harold