Xero integration
1. You need to create a private application
2. CONSUMER_KEY = "0GMQWVHXFLSF68MT69J94CHUHJ6W6";
CONSUMER_SECRET = "9MC5ZF6ETYOQNGB0ULVN4JF5JOH";
3. Create your Self-signed certificate
Using OpenSSL
openssl genrsa -out xero_privatekey.pem 1024
openssl req -newkey rsa:1024 -x509 -key xero_privatekey.pem -out xero_publickey.cer -days 365
The .cer will be needed when creating the API application in the Xero Developer Centre ‘Add Application’ screen
Extract the private key in PKCS8 format: openssl pkcs8 -topk8 -nocrypt -in xero_privatekey.pem -out xero_privatekey.pcks8
Code:
OAuth1AccessToken accessToken;
final String PROTECTED_RESOURCE_URL = "https://api.xero.com/api.xro/2.0/Accounts";
String API_KEY = "0GMQWVHXFLSF68MT69J94CHUHJ6W6";
String API_SECRET = "9MC5ZF6ETYOQNGB0ULVN4JF5JOH";
OAuth10aService service = new ServiceBuilder()
.signatureType(SignatureType.Header)
.apiKey(API_KEY)
.apiSecret(API_SECRET)
.build(xeroApi);
accessToken = new OAuth1AccessToken(API_KEY, API_SECRET);
logger.debug("Access Token"+accessToken.getToken());
OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL, service);
request.addHeader("Accept", "application/json");
service.signRequest(accessToken, request);
String responseString = "";
try {
Response response = request.send();
responseString = response.getBody().toString();
return responseString;
} catch (Exception e) {
e.printStackTrace();
logger.debug("Xero " + e.getLocalizedMessage());
}
logger.debug(responseString);
---------
Google OAuth sample code
Sample code
<%
// generated by xero
String CONSUMER_KEY = "GENERATED BY XERO WHEN CREATING YOUR APP";
// You will find the CONSUMER_PRIVATE_KEY in the .pcks8 file generated previously
// remove -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY-----
String CONSUMER_PRIVATE_KEY = "MIICeAIBADANBgkqhkiG9w0BAQIwggJXAAOlOGibUTx65x07L\n"+
"vHCCJWzF5CAcG53V/yg6/MCvmozgBJQyngz8ytgD9Fv1BYa2oSneFh3q3k\n"+
"E5mlIX1m90ZeZkJJ0RLpLtRBfKWeQGipDw5KCZjqtQjs4MQ76X6zZRhv4\n"+
"R3fbWfoo5yVbt5Bet/E5mlIX1m90ZeZkJJ0RLpLtRBfKWeQGipDw5KCZjqtQjs4M\n"+
"jx7+eM5fRN9RAjzosUjcnidfnMZwDfbRInNMLlUwVn8NiMKDSi5urCPBfSIH04By\n"+
"nL2l0xsuR8C/ZRU5O9PkovSuY0rTIkvgk9IixStUXoAonklQDyZIQlECQQCO7bqq\n"+
"thb+ds9+0CpfQyrqk4Mea7dowCH4qLCgfPZNWyY3nR62gi76OYGVKfwFPvJnNKcQ\n"+
"ro+uGRpx0lF0+crM";
OAuthServiceProvider serviceProvider = new OAuthServiceProvider(null,null,null);
OAuthConsumer consumer = new OAuthConsumer(null, CONSUMER_KEY, null, serviceProvider);
consumer.setProperty(RSA_SHA1.PRIVATE_KEY, CONSUMER_PRIVATE_KEY);
consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.RSA_SHA1);
OAuthAccessor accessor = new OAuthAccessor(consumer);
OAuthClient client = new OAuthClient(new HttpClient4());
System.out.println("accessToken: "+accessor.accessToken);
accessor.accessToken = CONSUMER_KEY;
OAuthMessage response = client.invoke(accessor, "https://api.xero.com/api.xro/2.0/Organisation", Collections.>emptySet());
String responseAsString = response.readBodyAsString();
System.out.println("RESPONSE IS" + responseAsString);
%>
Comments