java - 带有 scribes-java 库的 Woocommerce REST API 返回消费者 key 参数缺失错误消息

标签 java wordpress woocommerce oauth-1.0a

大家好,我正在尝试使用 scribe-java通过 http.code 访问 REST api 的库

package org.scribe.examples;
import java.util.*;
import org.scribe.builder.*;
import org.scribe.builder.api.*;
import org.scribe.model.*;
import org.scribe.oauth.*;
public class WooCommerceOauth1Example {

private static final String RESOURCE_URL = "http://WEBSITE.COM/wc-api/v1/orders";

public static void main(String[] args) {
    OAuthService service = new ServiceBuilder().provider(OneLeggedApi10.class)
            .apiKey("ck_SOME_NUMBER")
            .apiSecret("cs_SOME_NUMBER")
            .build();


    // Now let's go and ask for a protected resource!
    System.out.println("Now we're going to access a protected resource...");
    OAuthRequest request = new OAuthRequest(Verb.GET, RESOURCE_URL);
    //Since it is a one legged protocol, access token is empty.Right?      
    service.signRequest(new Token("", ""), request);

    Response response = request.send();
    System.out.println("Got it! Lets see what we found...");
    System.out.println();
    System.out.println(response.getCode());
    System.out.println(response.getBody());

    System.out.println();
    System.out.println("Thats it man! Go and build something awesome   with Scribe! :)");

   }
}

抛出以下错误 {“errors”:[{“code”:“woocommerce_api_authentication_error”,“message”:“oauth_consumer_key 参数丢失”}]} 。有什么想法为什么我的代码抛出上述错误吗?请注意,我已经使用 http 检查了 v1 端点,它返回了合理的消息。所以基本上它正在工作。

最佳答案

https://github.com/fernandezpablo85/scribe-java/blob/master/src/main/java/org/scribe/services/HMACSha1SignatureService.java#L32 中删除 '&' + OAuthEncoder.encode(tokenSecret)并向 QueryString 添加和更改签名类型,现在可以使用了。

清理后我会提出一个 PR。谢谢 Pablo。下面是完整代码

package org.scribe.builder.api;

import org.scribe.model.Token;
import org.scribe.model.Verb;

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;
}

}

以及示例类

package org.scribe.examples;


import org.scribe.builder.*;
import org.scribe.builder.api.*;
import org.scribe.model.*;
import org.scribe.oauth.*;

 public class WooCommerceOauth1Example {

private static final String NETWORK_NAME = "Woocommerce";
private static final String RESOURCE_URL = "http://YOUR_DOMAIN/wc-api/v1/orders/count";
private static final String SCOPE = "*"; //all permissions

public static void main(String[] args) {
    OAuthService service = new ServiceBuilder().provider(OneLeggedApi10.class)
            .apiKey("API_KEY")                
            .apiSecret("SECRET_KEY") 
            .debugStream(System.out)
            .signatureType(SignatureType.QueryString)
            /*.scope(SCOPE).*/
            .build();

    System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
    System.out.println();

    // Now let's go and ask for a protected resource!
    System.out.println("Now we're going to access a protected         resource...");
    OAuthRequest request = new OAuthRequest(Verb.GET, RESOURCE_URL);

    service.signRequest(new Token("", ""), request);
    Response response = request.send();
    System.out.println("Got it! Lets see what we found...");
    System.out.println();
    System.out.println(response.getCode());
    System.out.println(response.getBody());

    System.out.println();
    System.out.println("Thats it man! Go and build something awesome with Scribe! :)");

}

}

关于java - 带有 scribes-java 库的 Woocommerce REST API 返回消费者 key 参数缺失错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899147/

相关文章:

Java - 如何检查我的场景是否处于全屏模式?

java - Selenium : Use PageFactory or not?

java - Spring STS jpa + 安全 + Web

php - 在 Laravel 中使用 Eloquent 访问特定列

css - 我如何处理付款方式,以便我可以对其进行调整/CSS

java - Libgdx getAzimuth() 不起作用

css - WordPress - 最后加载 admin.css

WooCommerce 以编程方式为特定用户添加订单

php - 在 WooCommerce 商店页面上显示库存中可用的产品属性值

php - 在 Woocommerce 中获取订单项目数据值