in github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java [343:373]
public AccessToken getAccessToken(OAuthVerifier code) throws IOException {
HttpPost post = new HttpPost(config.gitHubOAuthAccessTokenUrl);
post.setHeader("Accept", "application/json");
List<NameValuePair> nvps = new ArrayList<>();
nvps.add(new BasicNameValuePair("client_id", config.gitHubClientId));
nvps.add(new BasicNameValuePair("client_secret", config.gitHubClientSecret));
nvps.add(new BasicNameValuePair("code", code.getValue()));
post.setEntity(new UrlEncodedFormEntity(nvps, Charsets.UTF_8));
HttpResponse postResponse = httpProvider.get().execute(post);
if (postResponse.getStatusLine().getStatusCode() != HttpURLConnection.HTTP_OK) {
log.error(
"POST "
+ config.gitHubOAuthAccessTokenUrl
+ " request for access token failed with status "
+ postResponse.getStatusLine());
EntityUtils.consume(postResponse.getEntity());
throw new IOException("GitHub OAuth request failed");
}
InputStream content = postResponse.getEntity().getContent();
String tokenJsonString =
CharStreams.toString(new InputStreamReader(content, StandardCharsets.UTF_8));
AccessToken token = gson.fromJson(tokenJsonString, AccessToken.class);
if (token.isError()) {
log.error("POST " + config.gitHubOAuthAccessTokenUrl + " returned an error token: " + token);
throw new IOException("Invalid GitHub OAuth token");
}
return token;
}