【问题标题】:woocommerce rest api OAuth authentication in androidAndroid中的woocommerce rest api OAuth身份验证
【发布时间】:2016-09-07 03:54:23
【问题描述】:

android 中 OAuth 1.0a(单腿)身份验证的示例代码是什么? 有图书馆吗? . 我使用eclipse,我是android的新手。谁能帮我解释一下路径?

【问题讨论】:

  • 你弄明白了吗?
  • @VipulKumar 感谢您的提醒。现在你可以看到答案了:)

标签: android oauth


【解决方案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();

此代码是从上面更新的,上面的代码正在从 wordpress Woocommerce API 获取 JSON。 但是,如果您想知道如何使用 Thread,这就是答案。 我添加 Log.v 以查看 json 响应。

【讨论】:

  • 解析失败:Ljavax/xml/bind/DatatypeConverter;在 service.signRequest(new Token("", ""), request); , 怎么解决??
【解决方案2】:

回答我自己的问题:

  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
希望对您有所帮助;)
祝你好运。。

【讨论】:

  • 谢谢,它正在工作。但是在分配给String 时,响应有一个限制。我怎样才能得到 JSON 格式的呢?
  • 在 scribe 库中它只返回单个字符串的响应。这样它支持几乎 2^31=2147483648 个字符的响应。检查显示抄写员响应类的此页面:grepcode.com/file/repo1.maven.org/maven2/org.scribe/scribe/…
  • @Moradi 给出错误解析失败:Ljavax/xml/bind/DatatypeConverter;就这一行 service.signRequest(new Token("", ""), request);, 怎么解决??
猜你喜欢
  • 2019-03-31
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
相关资源
最近更新 更多