private Map<String, String> loadAllToks(final String code, int port, final HttpClient httpClient) throws IOException { final HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/token"); try { final List<? extends NameValuePair> nvps = Arrays.asList( new BasicNameValuePair("code", code), new BasicNameValuePair("client_id", model.getSettings().getClientID()), new BasicNameValuePair("client_secret", model.getSettings().getClientSecret()), new BasicNameValuePair("redirect_uri", OauthUtils.getRedirectUrl(port)), new BasicNameValuePair("grant_type", "authorization_code")); final HttpEntity entity = new UrlEncodedFormEntity(nvps, LanternConstants.UTF8); post.setEntity(entity); log.debug("About to execute post!"); final HttpResponse response = httpClient.execute(post); log.debug("Got response status: {}", response.getStatusLine()); final HttpEntity responseEntity = response.getEntity(); final String body = IOUtils.toString(responseEntity.getContent()); EntityUtils.consume(responseEntity); final Map<String, String> oauthToks = JsonUtils.OBJECT_MAPPER.readValue(body, Map.class); log.debug("Got oath data: {}", oauthToks); return oauthToks; } finally { post.reset(); } }
/** * Fetches user's e-mail - only public for testing. * * @param allToks OAuth tokens. * @param httpClient The HTTP client. */ public int fetchEmail(final Map<String, String> allToks, final HttpClient httpClient) { final String endpoint = "https://www.googleapis.com/oauth2/v1/userinfo"; final String accessToken = allToks.get("access_token"); final HttpGet get = new HttpGet(endpoint); get.setHeader(HttpHeaders.Names.AUTHORIZATION, "Bearer " + accessToken); try { log.debug("About to execute get!"); final HttpResponse response = httpClient.execute(get); final StatusLine line = response.getStatusLine(); log.debug("Got response status: {}", line); final HttpEntity entity = response.getEntity(); final String body = IOUtils.toString(entity.getContent(), "UTF-8"); EntityUtils.consume(entity); log.debug("GOT RESPONSE BODY FOR EMAIL:\n" + body); final int code = line.getStatusCode(); if (code < 200 || code > 299) { log.error("OAuth error?\n" + line); return code; } final Profile profile = JsonUtils.OBJECT_MAPPER.readValue(body, Profile.class); this.model.setProfile(profile); Events.sync(SyncPath.PROFILE, profile); // final String email = profile.getEmail(); // this.model.getSettings().setEmail(email); return code; } catch (final IOException e) { log.warn("Could not connect to Google?", e); } finally { get.reset(); } return -1; }