twitter客户端javascript qml oauth 401无法验证签名和令牌

时间:2011-04-14 15:24:27

标签: javascript twitter oauth qml

我正在尝试编写基于javascript-qml的twitter客户端。 我正在使用oauth javascript库,由twitter dev页面建议 托管在谷歌代码上。 (http://oauth.googlecode.com/svn/code/ 的JavaScript /) 我一直试图通过做什么来从twitter获取请求令牌 在twiter dev页面上说,然后通过分析oauth库的例子 (源代码,http标头和wireshark),但我总是失败“401 - 未能验证oauth签名和令牌“。 通过改变顺序,我尝试了很多不同的方法 basetring之前的参数并签名,发布获取参数, 设置标题“授权”数据等,但每次都失败了 时间。 我可能做了一些愚蠢和错误的事情,但我只是看不到 哪里。 这是我的代码:

function getSignature() {
var accessor = { consumerSecret: consumer_secret,
    tokenSecret: oauth_token_secret
};
var message = { method: "POST",
    action: request_token_url,
    parameters: []
};
message.parameters.push(["oauth_callback", OAuth.formEncode(oauth_callback)]);
message.parameters.push(["oauth_consumer_key", consumer_key]);
message.parameters.push(["oauth_nonce", OAuth.nonce(10)]);
message.parameters.push(["oauth_signature_method", signature_method]);
message.parameters.push(["oauth_timestamp", OAuth.timestamp()]);
OAuth.completeRequest(message, accessor);
OAuth.SignatureMethod.sign(message, accessor);
console.log(OAuth.getParameter(message.parameters, "oauth_signature"));
var data = "OAuth oauth_consumer_key="+consumer_key+"&oauth_signature_method="+signature_method+"&oauth_callback="+OAuth.getParameter(message.parameters, "oauth_callback")
    +"&oauth_timestamp="+OAuth.getParameter(message.parameters, "oauth_timestamp")+"&oauth_nonce="+OAuth.getParameter(message.parameters, "oauth_nonce")+"&oauth_signature="+OAuth.getParameter(message.parameters, "oauth_signature");
console.log(data);
request_maker = new XMLHttpRequest();
request_maker.open("POST", request_token_url);
request_maker.setRequestHeader("Authorization", data);
request_maker.onreadystatechange = oth_func;
request_maker.send();

}

如果有人可以帮助我!这将是一种解脱! THX

2 个答案:

答案 0 :(得分:0)

gaetan,因为你得到401错误,听起来你可能在Twitter API方面做错了,甚至可能用Java Script做错了所以我认为这几乎与QML无关。但我可以推荐的是看看QML Twitter客户端,你可以在你的qt源代码导演中找到demos / declarative / twitter。也许这可以帮到你。

答案 1 :(得分:0)

我遇到了这个错误,因为我的目标(虚拟)机器上的时间是从实际时间开始的一周。当我更新问题的时间消失了。