i am planning to develop a native mobile Android App for WooCommerce shops.
I had a look at their REST API documentation here: http://docs.woocommercev2.apiary.io/ I
For http (and not ssl protocol such as https ) request, you must use from OAthu 1.0a authenticate framework.
There are many libraries for oauth 1.0a in java,
i'm use from scribeJava
So, do the following steps:
In app/build.gradle in dependency scop add this:
compile 'org.scribe:scribe:1.3.5'
New class as WoocommerceApi for provider of OAuth service.
important. You must use a
public class in DefaultApi10a for implementing oauth provider
public static class WooCommerceApi extends org.scribe.builder.api.DefaultApi10a {
@Override
public org.scribe.model.Verb getRequestTokenVerb()
{
return org.scribe.model.Verb.POST;
}
@Override
public String getRequestTokenEndpoint() {
return "http://www.your-domain.com/wc-auth/authorize";
}
@Override
public String getAccessTokenEndpoint() {
return "none";
}
@Override
public String getAuthorizationUrl(org.scribe.model.Token requestToken) {
return "none";
}
}
And you Must make request in Thread or AsyncTask
String restURL = "http://www.your-domain.com/wp-json/wc/v1/products/";
OAuthService service = new ServiceBuilder()
.provider(WooCommerceApi.class)
.apiKey(CONSUMER_KEY) //Your Consumer key
.apiSecret(CONSUMER_SECRET) //Your Consumer secret
.scope("API.Public") //fixed
.signatureType(SignatureType.QueryString)
.build();
OAuthRequest request = new OAuthRequest(Verb.GET, restURL);
// for POST requests
// OAuthRequest request = new OAuthRequest(Verb.POST, restURL);
// request.addBodyParameter(YOUR_PARAM_KEY, YOUR_VALUE);
// or
// request.addPayload(YOUR_JSON);
Token accessToken = new Token("", ""); //not required for context.io
service.signRequest(accessToken, request);
Response response = request.send();
Log.d("OAuthTask",response.getBody());