Использование JavaScript с Twitter API - PullRequest
7 голосов
/ 22 марта 2009

Я заинтересован в том, чтобы создать клиент для Twitter с использованием Adobe Air, но сейчас я немного застрял, так как не могу найти лучший способ подключения к API REST для Twitter, поскольку для него требуется аутентификация.

В настоящее время клиент отправляет запрос на мой сервер (скрипт php с использованием curl) с именем пользователя / паролем в Twitter (незашифрованными) в переменных GET. Затем сервер отправляет запрос в твиттер, используя эти учетные данные, и выводит буфер, который отправляется обратно клиенту, который затем обрабатывает / отображает его.

Это, очевидно, ужасная дыра в безопасности, так кто-нибудь знает о лучшем (более безопасном) способе сделать это?

К вашему сведению: Я использую jQuery.

Ответы [ 4 ]

9 голосов
/ 22 марта 2009

Существует несколько инструментов кодирования Base64. Вы можете использовать один из них. Вы можете добавить заголовок с закодированным именем пользователя и паролем на основе Basic Auth specs

Вот пост, который делает именно то, что вы хотите. http://www.aswinanand.com/blog/2009/01/http-basic-authentication-using-ajax/. Base64 кодируется с использованием этой библиотеки из ostermiller.org

$.ajax({    
  'url': 'http://twitter.com/action/',
  'otherSettings': 'othervalues',
  'beforeSend': function(xhr) {
    xhr.setRequestHeader("Authorization", "Basic  " + 
                          encodeBase64(username + ":" + password));
  },
  sucess: function(result) {
   alert('done');
  }
});
0 голосов
/ 07 сентября 2009

Ada - это клиент Adobe Air Twitter, написанный на Javascript. Вы можете скачать его, чтобы получить представление о том, что он делает:

http://madan.org/ada

Код для Ады на GitHub:

http://github.com/sfsam/ada/tree/master

Ада использует Base64. Хорошая вещь в Ada состоит в том, что кодовая база действительно мала, поэтому вы должны быть в состоянии понять все это.

0 голосов
/ 23 марта 2009

вы должны взглянуть на Spaz. http://funkatron.com/spaz - это клиент Twitter с открытым исходным кодом, написанный на javascript для Air. Источник доступен в Google Code. http://code.google.com/p/spaz/

Я не слишком много смотрел на источник, но вижу, что некоторые элементы были написаны во Flash / Flex. Однако я использую приложение, и оно просто работает.

Надеюсь, это полезно для вас.

0 голосов
/ 22 марта 2009

Я думал о том, чтобы сделать нечто подобное с прокси-сервером PHP (приложению требуется больше запросов, чем разрешено без белого списка, поэтому мне нужно будет направлять запросы через один IP-адрес).

Моя идея состоит в том, что вы отправляете комбинацию имя пользователя / пароль только один раз, а затем назначаете пользователю временный идентификатор сеанса, который будет использоваться для будущих запросов. Безопасная отправка начального имени пользователя / пароля немного сложна, вы можете зашифровать его солью, но я не знаю, насколько легко приложения AIR декомпилируются. Другим вариантом может быть SSL (но я все еще не совсем уверен, как это работает).

Вот пошаговое руководство для концепции идентификатора сеанса:

  1. Пользователь предоставляет учетные данные Twitter приложения AIR.
  2. Учетные данные зашифрованы и отправлены на прокси-сервер.
  3. Проверка подлинности проверена на прокси.
    • В случае успеха сеанс создается и возвращается идентификатор для использования.
      • Обратите внимание, что сессия содержит дату и время истечения и может использоваться только одним IP-адресом.
    • В случае неудачи клиенту возвращается ошибка.
  4. Клиент хранит идентификатор сессии и использует его в будущих запросах вместо имени пользователя / пароля.
    • например. request.php?action=get&data=friends_timeline&sessid=a3ajh83bah35nf
    • Время истечения сеанса увеличивается при каждом обновлении.
  5. Когда пользователь выходит из приложения, прокси-сообщение отправляется, и сеанс аннулируется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...