woocommerce rest api OAuth authentication in android

后端 未结 2 1866
你的背包
你的背包 2021-01-02 20:01

what is the sample code for OAuth 1.0a(one leg) authentication in android? is there a library for it? . I use eclipse and i\'m new in android. can anyone clarify the path fo

相关标签:
2条回答
  • 2021-01-02 20:17
    new Thread() {
                @Override
                public void run() {
                        String RESOURCE_URL = "http://www.woocommerce.com/wp-json/wc/v1/api/";
                        String SCOPE = "*"; //all permissions
                        Response response;
                        OAuthRequest request;
                        String responsebody = "";
                        OAuthService service = new ServiceBuilder().provider(OneLeggedApi10.class)
                                .apiKey("yourConsumerKey")
                                .apiSecret("yourConsumerSecret")
                                .signatureType(SignatureType.QueryString)
                                .debug()
                                /*.scope(SCOPE).*/
                                .build();
    
                        request = new OAuthRequest(Verb.GET, RESOURCE_URL);
                        service.signRequest(new Token("", ""), request);
    
                        // Now let's go and ask for a protected resource!
                        Log.d("scribe","Now we're going to access a protected resource...");
    
                    try {
                        response = request.send();
                        if (response.isSuccessful()) {
                            responsebody = response.getBody();
                            Log.v("response", responsebody);
                        }
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
    

    This code is updated from above, the above code is working getting JSON from wordpress Woocommerce API. But if you wondering how to use Thread this is the answer. And I add Log.v for see the json response.

    0 讨论(0)
  • 2021-01-02 20:25

    to answer my own question:

    1. download Scrib.jar library and add it to your lib folder(you can download it from (here)
    2. create a class with name "OneLeggedApi10" and copy below code in it:

      import org.scribe.builder.api.DefaultApi10a;
      import org.scribe.model.Verb;
      import org.scribe.model.Token;
      public class OneLeggedApi10 extends DefaultApi10a  {
      @Override
      public String getAccessTokenEndpoint() {
          return null;
      }
      
      @Override
      public String getRequestTokenEndpoint() {
          return null;
      }
      
      @Override
      public String getAuthorizationUrl(Token requestToken) {
          return null;
      }
      
      @Override
      public Verb getAccessTokenVerb() {
          return Verb.GET;
      }
      
      @Override
      public Verb getRequestTokenVerb() {
          return Verb.GET;
      }
      }
      


    3. now you can do OAuth authentication:

      String RESOURCE_URL = "http://yourDomain.com/wc-api/v3/orders";
      String SCOPE = "*"; //all permissions
      Response response;
      OAuthRequest request;
      String responsebody = "";
      OAuthService service = new ServiceBuilder().provider(OneLeggedApi10.class)
                      .apiKey("your_key")                
                      .apiSecret("your_apiSecret") 
                      .signatureType(SignatureType.QueryString)
                      .debug()
                      /*.scope(SCOPE).*/
                      .build();
      
                  request = new OAuthRequest(Verb.GET, RESOURCE_URL);
                  service.signRequest(new Token("", ""), request);
      
                  // Now let's go and ask for a protected resource!
                  Log.d("scribe","Now we're going to access a protected resource...");
                  try{
                      response = request.send();
                      if (response.isSuccessful()) {
                          responsebody  = response.getBody();
                      }
      
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
      
    4. note that if you are not using above code in an AsyncTask,then put the request.send() part in a thread (actually whole try_catch section) for avoiding run in main thread exception

    5. finally if you want to send data,for example in a case that you want to update an order,replace

       request = new OAuthRequest(Verb.GET, RESOURCE_URL);  
      

      with these lines:

      String payload = yourJsonOBJ.toString();
      request = new OAuthRequest(Verb.PUT, RESOURCE_URL);
      request.addHeader("Content-Type", "application/json");
      request.addPayload(payload);  
      

    more information in WooCommerce Documentation site
    Hope it help ;)
    good luck..

    0 讨论(0)
提交回复
热议问题