клиенту twitter javascript qml oauth 401 не удалось проверить подпись и токен - PullRequest
1 голос
/ 14 апреля 2011

Я пытаюсь закодировать Twitter-клиент на основе javascript-qml.Я использую библиотеку oauth javascript, посоветованную на странице Твиттера и размещенную в коде Google.(http://oauth.googlecode.com/svn/code/ javascript /) Я пытался получить токен запроса из твиттера, выполнив то, что сказано на странице разработчика twiter, а затем проанализировав пример библиотеки oauth (исходный код, заголовок http и wireshark), но я всегда терпел неудачуMsgstr "401 - не удалось проверить подпись и токен".Я пробовал много разных способов сделать это, изменив порядок параметров перед базовой строкой и подписав его, опубликовав параметры получения, установив данные заголовка «Авторизация» и т. Д., И т. Д., Но каждый раз это не удавалось.Я, вероятно, делаю что-то глупое и неправильное, но я просто не вижу, где.Вот мой код:

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 голосов
/ 31 мая 2012

У меня была эта ошибка, потому что время на моей целевой (виртуальной) машине было неделей от фактического времени. Когда я обновил время, проблема ушла.

0 голосов
/ 14 апреля 2011

gaetan, так как вы получаете ошибку 401, которая звучит так, как будто вы делаете что-то неправильно с точки зрения API Twitter или даже что-то с Java Script, так что я считаю, что это вряд ли связано с QML.Но я могу порекомендовать взглянуть на Twitter-клиент QML, который вы можете найти в директории исходного кода qt в demos / Declarative / twitter.Может быть, это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...