2011-06-15 65 views
4

嘗試獲取 請求令牌時收到http 403響應錯誤。OAuth,403響應錯誤request_token

我檢查了我的基本字符串的歌唱過程,這是正確的。如果

我使用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

我建議使用您自己的消費者密鑰和祕密檢查[Netflix OAuth測試器](http://developer.netflix.com/resources/OAuthTest)。將您的代碼生成的簽名基本字符串與Netflix測試器生成的簽名基本字符串進行比較。讓我們看看是否有任何差異。 – 2011-06-15 15:06:33

+0

感謝您的回覆,我測試了我的信息與他們的庫,它確實工作正常。我正在使用他們的Ajax示例來處理我的密鑰。 – user618952 2011-06-15 22:08:39

+0

你能解決它嗎?我面臨類似的問題..請幫助 – DevC 2014-04-21 15:03:58

回答

0

我發現是非常有幫助的是剛剛獲得,它與Netflix的OAuth的測試工作是cnauroth建議,然後比較一下你用這個代碼片斷髮送HTTP請求的原始這裏。 OAuth是棘手的,並沒有樂趣,所以如果你可以區分這兩個請求,你應該能夠找到一些不正確的編碼或錯位&。

相關問題