Я занимаюсь разработкой веб-приложения на основе Java и JSP. Я бы хотел, чтобы пользователи могли войти через Google Sign-In. Я копирую образец кода JSP, полученный из Inte rnet, чтобы открыть страницу входа в Google. После успешного входа пользователя код Javascript отправляет токен сервлету. Затем сервлет использует следующий код для проверки полученного токена:
public static GoogleIdToken.Payload getPayload (String tokenString) throws Exception {
GoogleIdTokenVerifier verifier =
new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new JacksonFactory())
.setAudience(Collections.singletonList(GOOGLE_CLIENT_ID))
.build();
Payload payload = null;
GoogleIdToken idToken = verifier.verify(tokenString);
if (idToken != null) {
payload = idToken.getPayload();
String userId = payload.getSubject();
System.out.println("User ID: " + userId);
// Get profile information from payload
String email = payload.getEmail();
boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
String name = (String) payload.get("name");
} // of if (idToken != null)
return payload;
}
Однако код verifier.verify(...)
всегда приводит к следующему исключению:
java. net .SocketTimeoutException: истекло время ожидания соединения java. net .DualStackPlainSocketImpl.waitForConnect (собственный метод) java. net .DualStackPlainSocketImpl.socketConnect (DualStackPlainSocketImpl. * * 10 * * 1038) .AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl. java: 350) java. net .AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl. java: 206) java. * 152 * .Amplain. : 188) java. net .PlainSocketImpl.connect (PlainSocketImpl. java: 172) java. net .SocksSocketImpl.connect (SocksSocketImpl. java: 392) java. net .Socket.connect (Socket. java: 589) sun.security.ssl.SSLSocketImpl.connect (SSLSocketImpl. java: 668) sun. net .NetworkClient.doConnect (NetworkClient. java: 175) sun . net. www.http.HttpClient.openServer (HttpClient. java: 432) солнце. net. www.http.HttpClient.openServer (HttpClient. java: 527) солнце. net. www.protocol.https.HttpsClient. (HttpsClient. java: 264) солнце. net. www.protocol.https.HttpsClient.New (HttpsClient. java: 367 ) солнце. net. www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient (AbstractDelegateHttpsURLConnection. java: 191) солнце. net. www.protocol.http.HttpURLConnection.plainConnect0 (HttpURLConnection. java: 1105) солнце. net. www.protocol.http.HttpURLConnection.plainConnect (HttpURLConnection. java: 999) солнце. net. www.protocol.https.AbstractDelegateHttpsURLConnection.connect (AbstractDelegateHttpsURLConnection. java: 177) солнце. net. www.protocol.https.HttpsURLConnectionImpl.connect (HttpsURLConnectionImpl. java: 153) com.google.api.client.http .jav anet .NetHttpRequest.execute (NetHttpRequest. java: 93) com.google.api.client.http.HttpRequest.execute (HttpRequest. java: 981) com.google.api.client.googleapis. auth.oauth2.GooglePublicKeysManager.refre sh (GooglePublicKeysManager. java: 172) com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager.getPublicKeys (GooglePublicKeysManager. java. google. *1081*). .client.googleapis.auth.oauth2.GoogleIdTokenVerifier.verify (GoogleIdTokenVerifier. java: 174) com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier.verify (GoogleIdTokenVerifier. * 10 83 *: 192)
Я не мог понять, почему. Может кто-нибудь помочь!
Заранее спасибо!