Авторизация Google Oauth зависает после принятия согласияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Авторизация Google Oauth зависает после принятия согласия

Сообщение Anonymous »

У меня есть приложение, которое не продолжает обработку после того, как я даю согласие на нужные области API. Мой процесс выглядит следующим образом:
Приложение представляет собой веб-приложение 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
На этом этапе я заблудился. Веб-страница просто вращается, ожидая чего-то, чего никогда не происходит. Я отключил брандмауэр, думая, что, возможно, ответ блокируется. Это не имело значения. Команда sudo netstat -tulpn показывает, что мое Java-приложение прослушивает порт 8081.
Кто-нибудь замечает, что я делаю что-то не так?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-consent
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»