Twitter API设置jQuery AJAX中的授权头

时间:2016-05-13 18:41:41

标签: javascript jquery ajax twitter twitter-oauth

我有问题。我有Twitter中的OAuth工具生成的授权标题(我隐藏了键值)

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 个答案:

答案 0 :(得分:1)

Twitter不支持从网页生成身份验证标头。您必须使用他们的网站进行“握手”验证并重定向回您的网页。

如果您想避免这种情况并在本地保留您的oauth密钥,则需要构建一个可以使用存储密钥进行身份验证的服务器。然后,您的网页将通过您的服务器发出Twitter请求。