2016-05-13 65 views
0

我遇到問題。我在Twitter上通過OAuth的工具生成的授權頭(我藏鑰匙的值)Twitter API設置jQuery中的授權標題AJAX

Authorization: OAuth oauth_consumer_key="xxxxxxxxxxxxxxxx", oauth_nonce="xxxxxxxxxxxxxxxx", oauth_signature="xxxxxxxxxxxxxxx", oauth_signature_method="HMAC-SHA1", oauth_timestamp="xxxxxxxxx", oauth_version="1.0" 

而且我有一個AJAX代碼:

$.ajax({ 
    url: 'https://api.twitter.com/1.1/search/tweets.json?q=%23freebandnames&since_id=24012619984051000&max_id=250126199840518145&result_type=mixed&count=4', 
    type: 'GET', 
    beforeSend: function (xhr) { 
      xhr.setRequestHeader('Authorization', 'OAuth oauth_consumer_key="xxxxxxxxxxxxxxx", oauth_nonce="xxxxxxxxxxxxxxx", oauth_signature="xxxxxxxxxxxxxxx", oauth_signature_method="HMAC-SHA1", oauth_timestamp="xxxxxxxxx", oauth_version="1.0"'); 
     }, 
    dataType: "jsonp", 
    success: function(data) { 
     console.log("Success: " + data); 
     } 
    }, 
    error: function(data) { 
     console.log("Error " + data); 
    } 

}); 

但這個代碼返回錯誤

Object {readyState: 4, status: 404, statusText: "error"} 

下面是我使用的文檔Twitter REST API的一部分: https://dev.twitter.com/rest/reference/get/search/tweets

出了什麼問題?有任何想法嗎?

回答

1

Twitter不支持從網頁生成身份驗證標頭。您必須通過使用其網站的「握手」進行身份驗證並重定向回您的網頁。

如果您想要避免這種情況並在本地保留您的oauth密鑰,您需要構建一個可以使用存儲的密鑰進行身份驗證的服務器。然後你的網頁將通過你的服務器發送Twitter請求。

+0

您不應該能夠使用不記名令牌和僅應用程序授權嗎? – Ketema

+0

我認爲這是可能的 - 使用AJAX發送帶有base64編碼密鑰和祕密的POST命令;從返回的數據中獲取訪問代碼,並且你正在路上。當然Twitter會恨你,因爲你正在向世界展示你的憑據:) – Jonas