Приложение представляет собой веб-приложение Java, работающее на Tomcat 10.1. Это внутреннее однопользовательское приложение, в котором я хочу иметь возможность читать и писать в своем календаре, составлять списки, читать и писать в своих таблицах Google. Поскольку я получаю доступ к своему личному календарю и таблицам, использование сервисной учетной записи исключается. Итак, я использую идентификатор клиента OAuth 2.
Мое приложение выполняет следующий код:
Код: Выделить всё
if ( credential == null ) {
final NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load( JSON_FACTORY , new StringReader( credentialsString ) );
File tokenDirectory = new java.io.File( tokensDirectoryPath );
LOGGER.debug( String.format( "Token directory: %s" , tokenDirectory.getAbsolutePath() ) );
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport , JSON_FACTORY , clientSecrets , Constants.SCOPES )
.setDataStoreFactory( new FileDataStoreFactory( new java.io.File( tokensDirectoryPath ) ) )
.setAccessType( "offline" )
.setApprovalPrompt( "force" )
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort( 8081 ).build();
credential = new AuthorizationCodeInstalledApp( flow , receiver ).authorize( "user" );
}
Код: Выделить всё
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=xxxx&redirect_uri=http://localhost:8081/Callback&response_type=code&scope=https://www.googleapis.com/auth/calendar%20https://www.googleapis.com/auth/drive.readonly%20https://www.googleapis.com/auth/spreadsheets
Я получаю обратно URI, который выглядит следующим образом:
Код: Выделить всё
http://localhost:8081/Callback?code=xxxxxxxxxxxxxxxxxx&scope=https://www.googleapis.com/auth/spreadsheets%20https://www.googleapis.com/auth/drive.readonly%20https://www.googleapis.com/auth/calendar
Кто-нибудь видит, что я делаю неправильно?
ОБНОВЛЕНИЕ: я написал пакетную программу, используя тот же код, запустил ее на своем локальном компьютере с Windows, и все работало нормально. Не уверен, что происходит с сервером Linux/Tomcat (без головы), учитывая, что брандмауэр отключен.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-consent
Мобильная версия