2016-05-11 3 views
5

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

+0

Вы поняли это? – VipulKumar

+0

@VipulKumar благодарит за комментарии. теперь вы можете увидеть ответ :) – Moradi

ответ

9

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

  1. скачать Scrib.jar библиотеку и добавить его в папку Lib (вы можете загрузить его с (here)
  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 Documentation site
Надежда это поможет;)
удачи ..

+0

спасибо, он работает. Но ответ имеет ограничение при назначении этой 'String'. Как я могу получить это в формате JSON? –

+0

в библиотеке scribe он возвращает ответ только в одном String. Таким образом, он поддерживает ответ с почти 2^31 = 2147483648 символами. проверьте эту страницу, на которой показан класс ответчика: http://grepcode.com/file/repo1.maven.org/maven2/org.scribe/scribe/1.3.0/org/scribe/model/Response.java#Response. 0stream – Moradi

1
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 API Woocommerce. Но если вам интересно, как использовать Thread, это ответ. И я добавляю Log.v, чтобы увидеть ответ json.

Смежные вопросы