我正在开发一个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
非常感谢任何帮助,
谢谢,
jelford
PS。我应该提到我正在使用JQuery,因为它不清楚。
答案 0 :(得分:0)
由于App最终只是客户端(它是专为JIL移动平台设计的),我决定咬紧牙关并完成OAuth,并且接受它如果你不能工作在Firefox中将其作为网页打开。
让我感到困惑的是 - 虽然我知道POST将永远不会在浏览器中运行 - 我想通过在HTTPRequest对象中设置Auth标头并仍然发出一个GET请求就可以了。显然不是。
现在这个点已经静音,因为应用程序已经过了截止日期(完成了:)),但我想有人可能想知道我没有让它通过基本身份验证路由工作