2010-03-27 140 views
0

我正在嘗試創建Google Chrome擴展程序,該擴展程序將向Twitter發送有趣的鏈接。但是,我無法連接到Twitter。服務器獲取我的請求,但響應總是相同的:「您無權訪問此服務器上的/1/statuses/update.json(403 Forbidden)。」我正在使用Wireshark來檢查Http響應。這裏是我正在使用的功能的代碼:twitter API的問題:無法更新狀態

function setStatus(msg) { 
var status = "status="+msg; 
var client = new XMLHttpRequest(); 
client.open("POST","http://api.twitter.com/1/statuses/update.json"); 
client.setRequestHeader("Authorization", "Basic <user credentials>"); 
client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
client.onreadystatechange = function(){ 
     if(client.readyState ==4){ 
      //whatever 
     } 
    } 
client.send(status); 

我做錯了什麼?我正在使用基本身份驗證。我使用this tool來進行編碼,只是把結果,而不是「用戶憑據」的一部分。另外,有人可以給我一個OAuth的例子嗎?

+0

請讓我知道如果我的答案幫助你然後:-) – 2010-03-27 22:42:02

+0

你使用client.setRequestHeader(「Authorization」,「Basic」+ Base64.encode(「user:password」)); ? (冒號很重要...) – Karussell 2010-03-27 22:45:17

回答

1

我已經發布了問題,但由於某種原因,該帖子丟失。沒關係,這是發生了什麼事情: 我在第一篇文章中給出的代碼示例是正確的,但是我在清單文件中犯了一個錯誤。清單文件包含「權限」部分 - 我需要列出擴展將要使用的所有鏈接。我忘記列出「http://api.twitter.com」,那就是問題所在。當我添加該鏈接時,一切都開始工作。感謝您的建議和回覆。

0

使用/account/verify_credentials首先檢查您的認證,您可能在編碼時犯了一些錯誤,或者密碼錯誤。

+0

我試過你的解決方案 - 我仍然得到403響應代碼。要麼我不斷地使用身份驗證頭錯誤,或者其他錯誤:( – 2010-03-27 23:10:17

0

你也應該能夠做到:

client.open("POST","https://screen_name:[email protected]/1/statuses/update.json"); 

,而不是擔心改變請求頭。