@HandlesEvent("loginGoogle") public Resolution loginGoogle() { logger.info("Entrando en LoginGoogle...."); OAuthService service = googleServiceProvider.getService(); logger.debug("OAuth service----->{}", service.getVersion()); Token accessToken = (Token) getContext().getRequest().getSession().getAttribute(ATTR_OAUTH_ACCESS_TOKEN + "Google"); if (accessToken == null) { logger.debug("El access Token es nulo, se crea uno nuevo."); Token requestToken = service.getRequestToken(); getContext() .getRequest() .getSession() .setAttribute(ATTR_OAUTH_REQUEST_TOKEN + "Google", requestToken); String url = AUTHORIZE_URL.concat(requestToken.getToken()); logger.debug("Se redirecciona a la pagina de google: {}", url); return new RedirectResolution(url); } logger.debug("Forward a pagina inicial, el access token esta en sesion: {}", accessToken); // coge perfil usuario OAuthRequest oauthRequest = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); logger.debug("Se va a conectar al servicio de google: "); service.signRequest(accessToken, oauthRequest); Response oauthResponse = oauthRequest.send(); String body = oauthResponse.getBody(); ObjectMapper mapper = new ObjectMapper(); try { respuestaJson = mapper.readValue(body, new TypeReference<Map<String, Object>>() {}); } catch (IOException e) { logger.error("El mapeado de Json fallo : {}", e.getMessage()); getContext() .getValidationErrors() .addGlobalError(new SimpleError("error.excepcion.jackson", e.getMessage())); } logger.debug("La respuesta body: {}", body); return new ForwardResolution("/WEB-INF/jsp/google.jsp"); }
@HandlesEvent("callback") public Resolution callback() { logger.debug("El codigo para verificar es: {}", oauth_verifier); // coge request token OAuthService service = googleServiceProvider.getService(); Token requestToken = (Token) getContext() .getRequest() .getSession() .getAttribute(ATTR_OAUTH_REQUEST_TOKEN + "Google"); // coge access token Verifier verifier = new Verifier(oauth_verifier); Token accessToken = service.getAccessToken(requestToken, verifier); logger.debug("El access token es: {}", accessToken.getRawResponse()); // guarda access token en session getContext() .getRequest() .getSession() .setAttribute(ATTR_OAUTH_ACCESS_TOKEN + "Google", accessToken); // coge perfil usuario OAuthRequest oauthRequest = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); logger.debug("Se va a conectar al servicio de google: "); service.signRequest(accessToken, oauthRequest); Response oauthResponse = oauthRequest.send(); String body = oauthResponse.getBody(); ObjectMapper mapper = new ObjectMapper(); try { respuestaJson = mapper.readValue(body, new TypeReference<Map<String, Object>>() {}); } catch (IOException e) { getContext() .getValidationErrors() .addGlobalError(new SimpleError("error.excepcion.jackson", e.getMessage())); } logger.debug("La respuesta body: {}", oauthResponse.getBody()); return new ForwardResolution("/WEB-INF/jsp/google.jsp"); }