2015-10-19 2 views
1

Я пытаюсь войти в систему с помощью Google OpenID.Apache Oltu OAuthClient.accessToken() не работает с таймаутом

Когда я пытаюсь аутентифицировать пользователя, я всегда сталкиваюсь с таймаутом при попытке получить AccessToken.

public class TestRun { 
    public static void main(String args[]) throws OAuthSystemException, OAuthProblemException { 
     OAuthClientRequest request = OAuthClientRequest 
       .tokenProvider(OAuthProviderType.GOOGLE) 
       .setGrantType(GrantType.AUTHORIZATION_CODE) 
       .setCode("") 
       .setRedirectURI(Env.REST_API_LOCATION+"/login") 
       .setClientId(Env.CLIENT_ID) 
       .setClientSecret(Env.CLIENT_SECRET) 
       .buildQueryMessage(); 

     OAuthClient oac = new OAuthClient(new URLConnectionClient()); 
     OAuthAccessTokenResponse response = oac.accessToken(request); 
     System.out.println(response.getAccessToken()); 
     System.out.println(response.getExpiresIn()); 
    } 
} 

Я всегда работать в ConnectException (тайм-аут), когда oac.accessToken (запрос) называется и не получить больше информации о том, что происходит.

ответ

1

Итак, проблема проста. Система, на которой работает мое программное обеспечение, доступна из Интернета, но исходящий трафик вынужден использовать прокси. Поскольку прокси не является прозрачным, мне пришлось написать свою собственную реализацию HttpClient, которая может иметь дело с прокси-сервером и заменить URLConnectionClient.