2011-04-27 150 views
2

我想通過使用OAuth通過「使用twitter進行簽名」進行身份驗證後加載用戶的家庭時間線。我正在使用這個庫來處理認證部分https://github.com/jmathai/twitter-async如何通過ajax請求發送Twitter OAuth訪問令牌?

身份驗證部分工作正常,但我不清楚如何發送請求作爲給定的身份驗證用戶的Twitter API。我想爲用戶的家庭時間表這樣一個Ajax請求:

// this call produces "is not allowed by Access-Control-Allow-Origin" error 
$.getJSON("http://api.twitter.com/1/statuses/home_timeline.json", function(json) { 
    console.log(json); 
}); 

所以我的問題是我怎麼令牌連同我的請求發送用戶的訪問,並在那裏保存令牌?還是我接近這個問題錯了?

+0

您已被[相同來源政策]阻止(http://en.wikipedia.org/wiki/Same_origin_policy)。您需要將其轉換爲[JSONP](http://en.wikipedia.org/wiki/JSONP)請求。 – 2011-04-27 13:59:30

+0

該庫是一個PHP庫,提供的代碼是JavaScript。如果您希望JavaScript進行API調用,則需要使用JavaScript OAuth庫。 – 2011-04-27 14:10:44

回答

3

您需要將此請求轉換爲JSONP請求,以便您可以執行跨域AJAX。

$.getJSON("http://api.twitter.com/1/statuses/home_timeline.json?callback=?", function(json) { 
    console.log(json); 
}); 

?callback=?將其轉換爲JSONP請求。

您提供的鏈接是針對PHP庫的。如果您想使用JavaScript進行API調用,則需要使用JavaScript OAuth庫。

+0

謝謝,將它轉換爲JSONP修復了相同的原點錯誤。我是在印象之下(http://stackoverflow.com/questions/1769713/using-only-jquery-to-update-twitter-oauth)只依靠javascript是一個壞主意。那麼通過ajax請求調用一個php文件會更好嗎?仍然不清楚訪問令牌的存儲位置以及如何將它傳遞給請求,無論它是php還是js。 – Moudy 2011-04-27 14:35:08

+0

我建議你使用你擁有的PHP庫,並打電話給它。您可以對可以爲您打電話的PHP腳本進行AJAX調用。 – 2011-04-27 14:43:00