我正在使用oauth签名生成我的oauth签名,以便与woocommerce api连接。我遵循了woocommerce rest api文档中所述的所有步骤:
所需的参数是:oauth_consumer_密钥、oauth_时间戳、oauth_nonce、oauth_签名和oauth_签名方法。oauth_版本不是必需的,应该省略。OAuth nonce可以是消费者密钥唯一的任意随机生成的32个字符(推荐)的字符串。等
但以下请求仍然未经授权返回:
http://siglar.no/wp-json/wc/v1/orders?oauth_consumer_key=ck_1ca1c6ff1a93de4836ee52c766538043d7f15d07
(别担心,钥匙只供本地使用)
答复:
{"code":"woocommerce_rest_cannot_view","message":"Beklager, du kan ikke liste ressurser.","data":{"status":401}}
Im使用WP 4.7、WC 2.6.9、为WC激活API、为WC禁用SSL等。。
我还检查了这是否符合图书馆的要求:
使用签名基字符串和您的消费者密钥生成签名
时区是UNIX,应该根据需要生成nonce。那么你们中的一些人发现问题了吗?这是我的代码:
constructor(private http: Http) {
var d = new Date();
var httpMethod = 'GET',
url = 'http://siglar.no/wp-json/wc/v1/orders',
ck = 'ck_1ca1c6ff1a93de4836ee52c766538043d7f15d07',
cs = 'cs_ce323425064c37688d614e4ff43a5489c6f78017',
sm = 'HMAC-SHA1',
nc = this.nonceGen(),
timestamp = Math.floor(d.getTime()/ 1000),
parameters = {
oauth_consumer_key : ck,
oauth_timestamp : timestamp,
oauth_nonce : nc,
oauth_signature_method : sm
},
// generates a RFC 3986 encoded, BASE64 encoded HMAC-SHA1 hash
encodedSignature = oauthSignature.generate(httpMethod, url, parameters, cs);
this.http.get(
url + '?oauth_consumer_key='+ck+'&oauth_timestamp='+timestamp+'&oauth_nonce='+nc+'&oauth_signature='+encodedSignature+'&oauth_signature_method='+sm
).subscribe(data => {
console.log('fetched');
console.log(data);
});
}
public nonceGen() {
let length = 32;
let text = "";
let possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for(let i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
}
还有其他人有这方面的运气吗?
我们遇到了401未授权
响应的问题,响应代码如woocommerce_rest_invalid_signature
。
事实证明,我们在散列时使用的URL与我们访问的URL不同,散列中使用的URL缺少尾随斜杠。
我终于成功了。
不知何故,它不适用于我本地的wordpress安装,但它确实适用于我的live wordpress网站:
Angular2代码:
constructor(private http: Http) {
var oauth = OAuth({
consumer: {
key: 'ck_...',
secret: 'cs_...'
},
signature_method: 'HMAC-SHA1',
hash_function: function(base_string, key) {
return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(base_string, key));
}
});
var requestData = {
url: 'http://siglarweb.no/wp-json/wc/v1/orders',
method: 'GET'
};
this.http.get(
requestData.url + '?' + jQuery.param(oauth.authorize(requestData))
).subscribe(data => {
console.log(data);
});
}
使用的库(通过npm安装):
npm install crypto-js--保存npm install oauth-1.0a--保存
所需文件:
"scripts": [
"../node_modules/crypto-js/crypto-js.js",
"../node_modules/oauth-1.0a/oauth-1.0a.js"
]
我尝试使用以下方法从Api获取json数据 我将这个物体建模如下 数据如下: 当我尝试使用模型访问时,我收到错误“\u InternalLinkedHashMap”
我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始
我试图禁用我的AngularJS应用程序中的缓存,但它无法使用以下代码: 当我使用
我正在使用certbot为我的网站创建SSL,并使用Nginx进行服务。然而,即使我在nginx conf中更改服务器块并重新启动它,只有原来的http工作,而https将返回ERR_CONNECTION_TIMED_OUT。 我在互联网上尝试了很多方法,包括将服务器块一分为二,调整listen 443设置,添加服务器名称。。。但所有这些似乎都不起作用,使用url和https将返回ERR_CONN
在owncloud相关网站和stackoverflow自身的以下链接中,所有相关信息都以不完整的形式呈现: 用户配置Api-Owncloud 我试着做一些非常简单的事情: > 我得到这样的输出: 开始处理凭据,首先它将存储在本地变量中 Hello Frank 您的密码是frankspassword failure 997未经授权 在owncloud中创建了一个新用户 我还尝试使用以下php脚本登录
我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。