woocommerce rest api OAuth authentication in android

后端 未结 2 1865
你的背包
你的背包 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: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..

提交回复
热议问题