【问题标题】:Problem with Twitter basic authentication using AJAX使用 AJAX 的 Twitter 基本身份验证问题
【发布时间】:2014-04-29 02:44:17
【问题描述】:

编辑:这个问题现在是多余的,因为 Twitter 不再支持基本身份验证。由于它与通过 AJAX 在其他服务上进行基本身份验证的任何人相关,因此我将其保留。


我正在开发一个 JavaScript 应用程序,作为其功能的一部分,用户需要能够更新他们的 Twitter 状态。该应用程序设计为在移动设备上运行,因此我真的不想将用户一直发送到 Twitter 网站进行登录;他们应该能够将他们的凭据传递给应用程序,我将处理所有登录。

所以我正在尝试将 Basic Auth 与 restful API 一起使用。我的代码如下:

function postTweet(input){
            $.ajax( {
                type: "POST",
                url: "http://twitter.com/statuses/update.json",
                data: {status: input},
                dataType: "json",
                error: function() { alert("Some error occured"); },
                success: function() { alert("Success!"); },
                beforeSend: function(request) { request.setRequestHeader("Authorization", "Basic BASE64OFMYCREDENTIALS");}
                } ) ;
        }

所以,据我所知,这应该从 XMLHttpRequest 标头执行身份验证,然后发布状态。

但是,每当我调用此代码时,我都会从 Twitter 收到“401 Unauthorized”错误。

以下是来自 firebug 的请求和响应标头:

请求:

OPTIONS /statuses/update.json HTTP/1.1
Host: twitter.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization

回复:

HTTP/1.1 401 Unauthorized
Date: Sat, 13 Mar 2010 11:08:58 GMT
Server: hi
Status: 401 Unauthorized
WWW-Authenticate: Basic realm="Twitter API"
X-Runtime: 0.00204
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache, max-age=300
Set-Cookie: guest_id=1268478538488; path=/
_twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCPlyNlcnAToHaWQiJWUyN2YzYjc3OTk2NGQ3%250ANzJkYTA4MjYzOWJmYTQyYmUyIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%250AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--d687808459872da0aa6a89cab35fd347300b4d07; domain=.twitter.com; path=/
Expires: Sat, 13 Mar 2010 11:13:58 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 88
Connection: close

对此的任何帮助将不胜感激,

谢谢,

杰尔福德

ps。我应该提到我正在使用 JQuery,以防不清楚。

【问题讨论】:

    标签: javascript ajax twitter xmlhttprequest basic-authentication


    【解决方案1】:

    由于该应用程序最终将仅是客户端(它是为 JIL 移动平台设计的),因此我决定硬着头皮进行完整的 OAuth,并接受如果您这样做是行不通的在 Firefox 中将其作为网页打开。

    让我感到困惑的是——虽然我知道 POST 永远不会在浏览器中工作——但我认为通过在 HTTPRequest 对象中设置 Auth 标头并仍然发出一个 GET 请求就可以了。显然不是。

    现在重点是静音,因为应用程序已经过了最后期限(完成了 :)),但我想有人可能想知道我没有通过基本的身份验证路线让它工作.

    【讨论】:

      猜你喜欢
      • 2015-07-22
      • 2011-04-25
      • 1970-01-01
      • 2018-12-20
      • 2021-05-17
      • 2010-11-24
      • 1970-01-01
      • 2016-01-01
      相关资源
      最近更新 更多