1

我正在尝试编写一个基于 javascript-qml 的 twitter 客户端。我正在使用 oauth javascript 库,由 twitter 开发页面建议并托管在 google 代码上。(http://oauth.googlecode.com/svn/code/javascript/)我一直在尝试通过 twiter 开发页面上所说的从 twitter 获取请求令牌,然后通过分析 oauth 库示例(源代码,http header 和 wireshark),但我总是失败“401 - 无法验证 oauth 签名和令牌”。我尝试了很多不同的方法来做到这一点,通过更改basestring之前的参数顺序并对其进行签名、发布获取参数、设置标题“授权”数据等,但每次都失败了。我可能在做一些愚蠢和错误的事情,但我就是看不到在哪里。这是我的代码:

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();

}

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

4

2 回答 2

0

我有这个错误是因为我的目标(虚拟)机器上的时间比实际时间晚了一周。当我更新时间问题就消失了。

于 2012-05-31T12:57:40.817 回答
0

gaetan,因为您收到 401 错误,听起来您可能在 Twitter API 或 Java Script 方面做错了,所以我相信这与 QML 几乎没有关系。但我可以推荐的是查看 QML Twitter 客户端,您可以在 demos/declarative/twitter 中的 qt 源代码目录中找到该客户端。也许这可以帮助你。

于 2011-04-14T17:35:05.017 回答