0

我試圖使用Twitter API使用JavaScript發佈推文。下面Twitter API錯誤:'內部服務器錯誤'

基本字符串詳細

POST&http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json&oauth_consumer_key%3DXXXXXXXXXXX%26oauth_nonce%3D9acc2f75c97622d1d2b4c4fb4124632b1273b0e0%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1305227053%26oauth_token%3D159970118-XXXXXXXXXXXXXXXXXXXXXXX%26oauth_version%3D1.0%26status%3DHello

OAuth oauth_nonce="9acc2f75c97622d1d2b4c4fb4124632b1273b0e0", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1305227053", oauth_consumer_key="XXXXXXXXXXXXXXXXX", oauth_token="159970118-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", oauth_signature="IWuyoPJBrfY03Hg5QJhDRtPoaDs%3D", oauth_version="1.0"

我用身體POST方法 「狀態=你好」

但我得到一個內部服務器錯誤。我身邊有什麼錯誤?提前致謝。使用

Javascript代碼

h是上述

鳴叫給出的標題= 「你好」

encodeURLall是用戶定義的,其在所有其他場合工作。

var xhr = new XMLHttpRequest(); 
xhr.open("POST","http://api.twitter.com/1/statuses/update.json", false); 
xhr.setRequestHeader("Authorization",h); 

xhr.onreadystatechange = function() { 

    if (xhr.readyState == 4) 
    { 
     console.log("STATUS="+xhr.status); 
     console.log("RESPONSE="+xhr.responseText); 
    } 
} 

xhr.send("status="+encodeURLall(tweet)); 

} 
+0

你是從瀏覽器發佈的?或者有沒有服務器端代碼做這個職位? – jimbojw 2011-05-12 19:30:13

+0

你能告訴我們你使用的代碼嗎? – 2011-05-12 19:33:29

+0

@jimbojw我只從瀏覽器發佈。 – Ram 2011-05-14 05:05:30

回答

0

由於Same origin policy,您無法使用XMLHttpRequest訪問Twitter網站。改爲使用JSONP或使用服務器端代理(調用您自己的服務器,將您的請求重定向到Twitter)。

順便說一下,encodeURLall()做什麼?你不應該只用encodeURIComponent


更新:引述Google

Regular web pages can use the XMLHttpRequest object to send and receive data from remote servers, but they're limited by the same origin policy . Extensions aren't so limited. An extension can talk to remote servers outside of its origin, as long as it first requests cross-origin permissions.

請仔細閱讀那裏看看哪些設置,你應該爲了使這項工作發生改變。

+0

所以我應該做這樣的'$阿賈克斯({ \t \t \t \t \t 'URL': 'http://api.twitter.com/1/statuses/update.json', \t \t \t \t \t '數據':{狀態:encodeURLall(鳴叫)}, \t \t \t \t \t '類型': '後', \t \t \t \t \t '成功':onUpdateCallback, \t \t \t \t \t '的dataType': 'JSONP' \t \t \t \t});'但如何將我設置請求頭。 – Ram 2011-05-14 12:10:21

+0

順便說一句我正在嘗試創建一個谷歌瀏覽器擴展。只是想給你清晰的想法,我正在做的掃管笏。那麼是不是可以在jsonp中設置標題? – Ram 2011-05-14 12:19:56

+0

@Ram:在Chrome擴展中,它可能會有所不同。 – 2011-05-14 12:55:54