javaapioauthintuit-partner-platformreconnect

How to call API (Oauth 1.0)?


I am trying to call this API (Oauth1.0 standard):

https://appcenter.intuit.com/api/v1/Connection/Reconnect

And what I am doing is : (It am working on java)

Base64Encoder baseEncoder = Base64Encoder.getInstance();
            CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet("https://appcenter.intuit.com/api/v1/connection/reconnect");
            StringBuilder headerReq = new StringBuilder();
            headerReq.append("OAuth ");
            headerReq.append("oauth_token=\"").append(OAUTHTOKEN).append("\"");
            headerReq.append(", oauth_consumer_key=\"").append(CUNSUMER_KEY).append("\"");
            headerReq.append(", oauth_signature_method=\"base64\"");
            headerReq.append(", oauth_signature=\"")          .append(baseEncoder.encode(PropsUtil.get(OAUTH_CONSUMER_SECRET).getBytes()))
                    .append(baseEncoder.encode("&".getBytes()))            .append(baseEncoder.encode(symmetricEncrypter.decryptData(OAUTH_TOKEN_SECRET).getBytes())).append("\"");
            headerReq.append(", oauth_version=\"1.0\"");
            httpGet.addHeader("Authorization", headerReq.toString());
            CloseableHttpResponse response = httpclient.execute(httpGet);
            try {
                System.out.println("Responsee::"+ response.getStatusLine());
}

And, the response what I am getting is:

<?xml version="1.0" encoding="utf-8"?>
<PlatformResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://platform.intuit.com/api/v1">
  <ErrorMessage>This API requires Authorization.</ErrorMessage>
  <ErrorCode>22</ErrorCode>

Can you please suggest me what I am missing while creating request for Oauth1.0 standard or Please, anyone can provide me the sample code of Oauth1.0 request example on that standard.

Thank you very much.


Solution

  • PFB working code. Hope it will be useful.

    import java.io.InputStream;
    import java.io.StringWriter;
    import java.net.URI;
    import java.net.URISyntaxException;
    
    import oauth.signpost.OAuthConsumer;
    import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
    import oauth.signpost.exception.OAuthCommunicationException;
    import oauth.signpost.exception.OAuthExpectationFailedException;
    import oauth.signpost.exception.OAuthMessageSignerException;
    import oauth.signpost.signature.AuthorizationHeaderSigningStrategy;
    
    import org.apache.commons.io.IOUtils;
    import org.apache.http.HttpHost;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpRequestBase;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import com.intuit.ipp.data.Account;
    import com.intuit.ipp.exception.FMSException;
    import com.intuit.ipp.net.MethodType;
    import com.intuit.ipp.services.DataService;
    
    public class POCWithoutDevkitTest {
    
        private DataService service;
        private OAuthConsumer oAuthConsumer;
        private static String realmID = null;
    
        public POCWithoutDevkitTest() {
            realmID = "122294642099";
            String consumerKey = "AAAAA";
            String consumerSecret = "BBBBB";
            String accessToken = "CCCCC";
            String accessTokenSecret = "DDDDD";
    
            setupContext(consumerKey, consumerSecret, accessToken, accessTokenSecret);
        }
    
        public void setupContext(String consumerKey, String consumerSecret, String accessToken, String accessTokenSecret) {
                this.oAuthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret);
                oAuthConsumer.setTokenWithSecret(accessToken, accessTokenSecret);
                oAuthConsumer.setSigningStrategy(new AuthorizationHeaderSigningStrategy());
        }
    
        public void authorize(HttpRequestBase httpRequest) throws FMSException {
            try {
                oAuthConsumer.sign(httpRequest);
            } catch (OAuthMessageSignerException e) {
                throw new FMSException(e);
            } catch (OAuthExpectationFailedException e) {
                throw new FMSException(e);
            } catch (OAuthCommunicationException e) {
                throw new FMSException(e);
            }
        }
    
        public void executeGetRequest(String customURIString){
            DefaultHttpClient client = new DefaultHttpClient();
            client.getParams().setParameter("http.protocol.content-charset", "UTF-8");
    
            HttpRequestBase httpRequest = null;
            URI uri = null;
    
            try {
                uri = new URI(customURIString);
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
    
            String methodtype = "GET";
    
            if (methodtype.equals(MethodType.GET.toString())) {
                httpRequest = new HttpGet(uri);
            }
    
            httpRequest.addHeader("content-type", "application/xml");
            httpRequest.addHeader("Accept","application/xml");
    
            try {
                authorize(httpRequest);
            } catch (FMSException e) {
                e.printStackTrace();
            }
    
    
            HttpResponse httpResponse = null;
            try {
                HttpHost target = new HttpHost(uri.getHost(), -1, uri.getScheme());
                httpResponse = client.execute(target, httpRequest);
                System.out.println("Connection status : " + httpResponse.getStatusLine());
    
                InputStream inputStraem = httpResponse.getEntity().getContent();
    
                StringWriter writer = new StringWriter();
                IOUtils.copy(inputStraem, writer, "UTF-8");
                String output = writer.toString();
    
                System.out.println(output);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
        public static void main(String args[]) {
            POCWithoutDevkitTest withoutDevkitClient = new POCWithoutDevkitTest();
            withoutDevkitClient.executeGetRequest("https://appcenter.intuit.com/api/v1/connection/reconnect");
        }
    
    }
    

    Dependencies

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.3.1</version>
        </dependency>
        <dependency>
            <groupId>oauth.signpost</groupId>
            <artifactId>signpost-core</artifactId>
            <version>1.2.1.1</version>
        </dependency>
        <dependency>
            <groupId>oauth.signpost</groupId>
            <artifactId>signpost-commonshttp4</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.3.1</version>
        </dependency>
    

    Thanks