Twitter API 在 jQuery AJAX 中设置授权 header

Twitter API setting Authorization header in jQuery AJAX

我有问题。我有授权 header 由 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

怎么了?有什么想法吗?

Twitter 不支持从网页生成身份验证 header。您必须通过 "handshake" 使用他们的网站进行身份验证并重定向回您的网页。

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