Я заинтересован в создании клиента Twitter с помощью Adobe Air, но сейчас я немного зацикливаюсь, так как не могу найти лучший способ подключиться к REST API Twitter, так как ему нужна аутентификация.
В настоящее время клиент отправляет запрос на мой сервер (скрипт php с использованием curl) с именем пользователя / паролем twitter (незашифрованным) в переменных GET. Затем сервер делает запрос на твиттер, используя эти учетные данные, и выводит буфер, который отправляется обратно клиенту, который затем обрабатывает / отображает его.
Очевидно, это ужасная дыра в безопасности, и кто-нибудь знает о лучшем (более безопасном) способе ее выполнения?
FYI: Я использую jQuery.
Есть несколько инструментов кодирования Base64. Вы можете использовать один из них. Вы можете добавить заголовок с закодированным именем пользователя и паролем на основе спецификаций Basic Auth
Вот сообщение, которое делает именно то, что вы хотите. http://www.aswinanand.com/blog/2009/01/http-basic-authentication-using-ajax/ . База64 кодируется с использованием этой библиотеки с сайта 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'); } });
Я думал о том, чтобы делать что-то подобное с прокси-сервером PHP (для приложения требуется больше запросов, чем разрешено без «белого списка», поэтому мне нужно будет направлять запросы через один IP-адрес).
Моя идея состоит в том, что вы отправляете комбинацию имени пользователя и пароля один раз, а затем назначаете пользователю временный идентификатор сеанса, который используется для будущих запросов. Надежно направить исходное имя пользователя / пароль немного сложно, вы можете зашифровать его солью, но я не знаю, как легко декомпилировать приложения AIR. Другим вариантом может быть SSL (но я все еще не совсем уверен, как это работает).
Вот пошаговое руководство для концепции идентификатора сеанса:
request.php?action=get&data=friends_timeline&sessid=a3ajh83bah35nf
вы должны взглянуть на Spaz. http://funkatron.com/spaz – это клиент Twitter с открытым исходным кодом, написанный на javascript для Air. Источник доступен в Google Code. http://code.google.com/p/spaz/
Я не так много посмотрел на источник, но вижу, что некоторые элементы были написаны во Flash / Flex. Однако я использую приложение, и он просто работает.
Надеюсь, это вам полезно.
Ada – клиент Adobe Air Twitter, написанный на Javascript. Вы можете загрузить его, чтобы получить представление о том, что он делает:
Код для Ada находится на GitHub:
http://github.com/sfsam/ada/tree/master
Ada использует Base64. Приятная вещь в Ada заключается в том, что база кода действительно маленькая, поэтому вы должны все это понять.