【问题标题】:Twitter API setting Authorization header in jQuery AJAXjQuery AJAX 中的 Twitter API 设置授权标头
【发布时间】:2016-09-10 01:49:18
【问题描述】:

我有问题。我有 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

怎么了?有什么想法吗?

【问题讨论】:

    标签: javascript jquery ajax twitter twitter-oauth


    【解决方案1】:

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

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

    【讨论】:

    • 不应该使用不记名令牌和仅应用程序授权吗?
    • 我认为这是可能的——使用 AJAX 发送带有 base64 编码密钥和秘密的 POST 命令;从返回的数据中获取访问代码,您就在路上。 Twitter 当然会恨你,因为你将你的凭据暴露给全世界:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2018-01-14
    • 2013-12-11
    • 1970-01-01
    • 2020-03-28
    • 2021-11-21
    • 2015-12-02
    相关资源
    最近更新 更多