code: public OauthData getOauthData(String code, String clientId, String secret, String state,
              boolean autoSetRequestToken) throws HelloSignException {
          OauthData data = new OauthData(httpClient.withAuth(auth).withPostField(OAUTH_STATE, state)
                  .withPostField(OAUTH_CODE, code).withPostField(CLIENT_ID, clientId)
                  .withPostField(OAUTH_GRANT_TYPE, OAUTH_GRANT_TYPE_AUTHORIZE_CODE).withPostField(CLIENT_SECRET, secret)
                  .post(OAUTH_TOKEN_URL).asJson());
          if (data != null && autoSetRequestToken) {
              setAccessToken(data.getAccessToken(), data.getTokenType());
          }
          return data;
      }
docs: Performs an OAuth request and returns the necessary data for authorizing
  an API application, and will automatically set the access token and code
  for making authenticated requests with this client.
  
  @param code String OAuth code
  @param clientId String OAuth client ID
  @param secret String OAuth secret
  @param state String OAuth client state
  @param autoSetRequestToken true if the token should be applied to this
  client for future requests
  @return OauthData object containing OAuth token details
  @throws HelloSignException thrown if there's a problem processing the
  HTTP request or the JSON response.