AuthToken authToken = new AuthToken(email, password);
// Get AdWordsUser from "~/adwords.properties". In the properties file,
// you will only need to set the developerToken, useragent, or clientId (if
// needed).
AdWordsUser user = new AdWordsUser();
// Uncomment to cause a CAPTCHA required failure.
// causeCaptchaError(authToken);
String authTokenString = "";
// Handle CAPTCHA error.
try {
// Get auth token string.
authTokenString = authToken.getAuthToken();
} catch (AuthTokenException e) {
if (e.getErrorCode() != null && e.getErrorCode().equals("CaptchaRequired")) {
// Try getting the auth token again but with a captcha.
System.out.println("Go here and read the captcha: " + e.getCaptchaInfo().getCaptchaUrl());
System.out.print("Answer is: ");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String answer = in.readLine().trim();
authTokenString =
new AuthToken(authToken, e.getCaptchaInfo().getCaptchaToken(), answer).getAuthToken();
} else {
throw e;
}
}
// Set the auth token in the user so that it will not be generated when
// user.getService() is called.
user.setAuthToken(authTokenString);
// Handle possible token expiration. You can cause an expiration by
// pausing this code and changing the password of the account before the
// first makeApiRequest() is called. If you do so, change your password back
// before you regenerate the auth token again.
try {
makeApiRequest(user);
} catch (ApiException e) {
for (ApiError error : e.getErrors()) {
if (error instanceof AuthenticationError) {
AuthenticationError authError = (AuthenticationError) error;
if (authError.getReason() == AuthenticationErrorReason.GOOGLE_ACCOUNT_COOKIE_INVALID) {
// Try to regenerate auth token here again in case it expired.
user.setAuthToken(authToken.getAuthToken());
makeApiRequest(user);
} else {
System.err.println("Service call failed for authentication reason: "
+ authError.getReason());
}