0

EDIT: этот вопрос теперь лишний, так как Twitter больше не поддерживает базовое auth. Я оставил его, так как он имеет отношение к любому, кто делает базовый аут через AJAX для других служб.Проблема с базовой аутентификацией Twitter с использованием AJAX


Я разрабатываю яваскрипта приложение, которое необходимо, как часть своей функциональности для пользователей, чтобы иметь возможность обновлять свой статус в Twitter. Приложение предназначено для работы на мобильных телефонах, и поэтому я действительно не хочу отправлять пользователей на сайт Twitter для входа в систему; они должны просто иметь возможность передавать свои учетные данные в приложение, и я обработаю все данные.

Так что я пытаюсь использовать Basic Auth с остальным 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, а затем опубликовать статус.

Однако, когда я называю этот код, я получаю сообщение об ошибке «401 Unauthorized» из Twitter.

Ниже приведены заголовки ответа запрос & от поджигатель:

Запрос:

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

пс. Должен упомянуть, что я использую JQuery, потому что это не ясно.

ответ

0

Поскольку приложение в конечном итоге предназначалось только для клиентской стороны (оно предназначено для мобильной платформы JIL), я решил укусить пулю и сделать полный OAuth и просто согласиться с тем, что она не будет работать, если вы открыли его как веб-страницу в Firefox.

Что меня озадачивает, так как я знаю, что POST-файлы никогда не будут работать в браузере, - подумал я, установив заголовки Auth в объект HTTPRequest и все еще создавая запрос GET, который бы все прошел нормально. Очевидно нет.

Точка немой сейчас, так как приложение прошло свой срок (закончил :)), но я подумал, что кому-то может понравиться знать, что я не сделал, проработав его по базовому маршруту auth.

 Смежные вопросы

  • Нет связанных вопросов^_^