OAuth, ошибка 403 ответа на request_token - PullRequest
4 голосов
/ 15 июня 2011

Ошибка получения ответа http 403 при попытке получить токен запроса.

Я проверил процесс пения моей базовой струны, и это правильно.Если

я использую ключи по умолчанию на сайте разработчика Twitter, он генерирует тот же результат, что и список на сайте, поэтому я уверен, что все в порядке.

Любое понимание будет высоко ценится!


var reqURL = 'https://api.twitter.com/oauth/request_token';
var reqNonce = getNonce();      
var reqTimeStamp = getTimeStamp();  
var reqSignatureMethod = 'HMAC-SHA1';
var reqOauthVersion = '1.0';
var reqConsumerKey = 'ySBPkqxaRlheQKFwejMpqg';
var reqConsumerSecret = '______________&'  // note the & at the end..
var reqCallback = 'http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11'
var reqQuery = 'oauth_callback=' + reqCallback + '&oauth_consumer_key=' + reqConsumerKey + '&oauth_nonce=' + reqNonce + '&oauth_signature_method=' + reqSignatureMethod + '&oauth_timestamp=' + reqTimeStamp + '&oauth_version=' + reqOauthVersion;
var reqBaseString = 'POST&' + reqURL + '&' + encodeURIComponent(reqQuery);
var reqSignature = b64_hmac_sha1(reqConsumerSecret, reqBaseString);
var reqSignature = reqSignature + '=';
var request = new XMLHttpRequest();
request.onreadystatechange = function(data) {
    if (request.readyState == 4) {

        // Good response, got the xml file
        if (request.status == 200) {
            alert ('good response');
        }
    }
};

// alert (reqURL);
// alert (reqBaseString);

var oauthParams = encodeURIComponent("OAuth oauth_callback=\"" + reqCallback + "\",oauth_consumer_key=\"" + reqConsumerKey + "\",oauth_nonce=\"" + reqNonce + "\",oauth_signature_method=\"" + reqSignatureMethod + "\",oauth_timestamp=\"" + reqTimeStamp + "\",oauth_version=\"1.0\",oauth_signature=\"" + reqSignature + "\"");

request.open("POST", reqURL, true);
request.setRequestHeader("Accept", "text/plain, */*");
request.setRequestHeader("Connection", "Keep-Alive");
request.setRequestHeader("Authorization", oauthParams);
request.send();

1 Ответ

0 голосов
/ 16 июля 2011

То, что я нашел очень полезным, - это просто получить необработанный HTTP-запрос, который работает с тестом Netflix OAuth, который предложил cnauroth, и затем сравнить его с тем, что вы отправляете с этим фрагментом кода здесь.OAuth сложен и не весел, поэтому, если вы можете просто различить два запроса, вы сможете найти некоторую неправильную кодировку или неуместное &.

...