woocommerce rest api OAuth-аутентификация в андроиде

Какой пример кода для аутентификации OAuth 1.0a(одна нога) в Android? есть ли библиотека для этого?, Я использую затмение, и я новичок в Android. кто-нибудь может уточнить путь для меня?

2 ответа

Решение

Ответить на мой собственный вопрос:

  1. скачайте библиотеку Scrib.jar и добавьте ее в свою папку lib (вы можете скачать ее с ( здесь)
  2. создайте класс с именем "OneLeggedApi10" и скопируйте в него код ниже:

    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. Теперь вы можете выполнить аутентификацию OAuth:

    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. обратите внимание, что если вы не используете приведенный выше код в AsyncTask, то поместите часть request.send() в поток (фактически весь раздел try_catch), чтобы избежать запуска в исключении основного потока

  5. наконец, если вы хотите отправить данные, например, в случае, если вы хотите обновить заказ, замените

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

    с этими строками:

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

больше информации на сайте документации WooCommerce
Надеюсь, это поможет;)
удачи..

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();

Этот код обновлен сверху, приведенный выше код работает, получая JSON из WordPress Woocommerce API. Но если вам интересно, как использовать нить, это ответ. И я добавляю Log.v для просмотра ответа json.

Другие вопросы по тегам