use of com.google.api.client.util.GenericData in project google-auth-library-java by google.
the class ServiceAccountCredentials method refreshAccessToken.
/**
* Refreshes the OAuth2 access token by getting a new access token using a JSON Web Token (JWT).
*/
@Override
public AccessToken refreshAccessToken() throws IOException {
if (createScopedRequired()) {
throw new IOException("Scopes not configured for service account. Scoped should be specified" + " by calling createScoped or passing scopes to constructor.");
}
JsonFactory jsonFactory = OAuth2Utils.JSON_FACTORY;
long currentTime = clock.currentTimeMillis();
String assertion = createAssertion(jsonFactory, currentTime);
GenericData tokenRequest = new GenericData();
tokenRequest.set("grant_type", GRANT_TYPE);
tokenRequest.set("assertion", assertion);
UrlEncodedContent content = new UrlEncodedContent(tokenRequest);
HttpRequestFactory requestFactory = transportFactory.create().createRequestFactory();
HttpRequest request = requestFactory.buildPostRequest(new GenericUrl(tokenServerUri), content);
request.setParser(new JsonObjectParser(jsonFactory));
request.setIOExceptionHandler(new HttpBackOffIOExceptionHandler(new ExponentialBackOff()));
request.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff()).setBackOffRequired(new BackOffRequired() {
public boolean isRequired(HttpResponse response) {
int code = response.getStatusCode();
return (// Server error --- includes timeout errors, which use 500 instead of 408
code / 100 == 5 || // https://github.com/google/google-api-java-client/issues/662
code == 403);
}
}));
HttpResponse response;
try {
response = request.execute();
} catch (IOException e) {
throw new IOException("Error getting access token for service account: ", e);
}
GenericData responseData = response.parseAs(GenericData.class);
String accessToken = OAuth2Utils.validateString(responseData, "access_token", PARSE_ERROR_PREFIX);
int expiresInSeconds = OAuth2Utils.validateInt32(responseData, "expires_in", PARSE_ERROR_PREFIX);
long expiresAtMilliseconds = clock.currentTimeMillis() + expiresInSeconds * 1000L;
return new AccessToken(accessToken, new Date(expiresAtMilliseconds));
}
use of com.google.api.client.util.GenericData in project google-auth-library-java by google.
the class UserCredentials method refreshAccessToken.
/**
* Refreshes the OAuth2 access token by getting a new access token from the refresh token
*/
@Override
public AccessToken refreshAccessToken() throws IOException {
if (refreshToken == null) {
throw new IllegalStateException("UserCredentials instance cannot refresh because there is no" + " refresh token.");
}
GenericData tokenRequest = new GenericData();
tokenRequest.set("client_id", clientId);
tokenRequest.set("client_secret", clientSecret);
tokenRequest.set("refresh_token", refreshToken);
tokenRequest.set("grant_type", GRANT_TYPE);
UrlEncodedContent content = new UrlEncodedContent(tokenRequest);
HttpRequestFactory requestFactory = transportFactory.create().createRequestFactory();
HttpRequest request = requestFactory.buildPostRequest(new GenericUrl(tokenServerUri), content);
request.setParser(new JsonObjectParser(JSON_FACTORY));
HttpResponse response = request.execute();
GenericData responseData = response.parseAs(GenericData.class);
String accessToken = OAuth2Utils.validateString(responseData, "access_token", PARSE_ERROR_PREFIX);
int expiresInSeconds = OAuth2Utils.validateInt32(responseData, "expires_in", PARSE_ERROR_PREFIX);
long expiresAtMilliseconds = clock.currentTimeMillis() + expiresInSeconds * 1000;
return new AccessToken(accessToken, new Date(expiresAtMilliseconds));
}
use of com.google.api.client.util.GenericData in project googleads-java-lib by googleads.
the class ReportServiceLoggerTest method setUp.
/**
* Sets all instance variables to values for a successful request. Tests that require failed
* requests or null/empty values should mutate the instance variables accordingly.
*/
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
requestMethod = "POST";
url = "http://www.foo.com/bar";
reportServiceLogger = new ReportServiceLogger(loggerDelegate);
requestFactory = new NetHttpTransport().createRequestFactory();
// Constructs the request headers and adds headers that should be scrubbed
rawRequestHeaders = ReportServiceLogger.SCRUBBED_HEADERS.stream().collect(Collectors.toMap(h -> h, h -> "foo" + h));
// Adds headers that should not be scrubbed.
rawRequestHeaders.put("clientCustomerId", "123-456-7890");
rawRequestHeaders.put("someOtherHeader", "SomeOtherValue");
GenericData postData = new GenericData();
postData.put("__rdquery", "SELECT CampaignId FROM CAMPAIGN_PERFORMANCE_REPORT");
httpRequest = requestFactory.buildPostRequest(new GenericUrl(url), new UrlEncodedContent(postData));
for (Entry<String, String> rawHeaderEntry : rawRequestHeaders.entrySet()) {
String key = rawHeaderEntry.getKey();
if ("authorization".equalsIgnoreCase(key)) {
httpRequest.getHeaders().setAuthorization(Collections.<String>singletonList(rawHeaderEntry.getValue()));
} else {
httpRequest.getHeaders().put(key, rawHeaderEntry.getValue());
}
}
httpRequest.getResponseHeaders().setContentType("text/csv; charset=UTF-8");
httpRequest.getResponseHeaders().put("someOtherResponseHeader", "foo");
httpRequest.getResponseHeaders().put("multiValueHeader", Arrays.<String>asList("value1", "value2"));
}
Aggregations