Delphi и работа с Twitter API по протоколу OAuth.

Это первая статья, будем надеяться из целой серии статей, о том, как написать своё приложение работающее с Twitter API. Для этой задачи я выбрал среду разработки Delphi, а следовательно, моментально нажил себе огромное количество проблем, почему Delphi? Дело в том, что идея написать что-нибудь для Twitter, появилась у меня неспроста, а в рамках курсового проекта по ООП, где как раз таки я и изучал среду разработки от, когда то очень популярной компании Borland.

Готовых решений, или хоть каких-то внятных статей на данную тему я почти не нашёл, за исключением старенького клиента Red Tweet, давно заброшенного авторами. Так что считаю своим долгом рассказать вам, как воплотить в жизнь свой Twitter клиент, ну или ещё чего-нибудь, что позволяет API Твиттера, используя всё, что нам предлагает среда разработки Delphi.

Итак, хватит лишних слов, приступим к делу. С какого края лучше подойти к поставленной задаче написать хоть что то внятное с использованием Твиттеровского АПИ? Конечно с регистрации своего будущего приложения. Это совсем не сложно, достаточно выполнить несколько простейших действий.

Следующим шагом, мы приступим к изучению теории о способах авторизации пользователя в Tвиттере. Где же об этом разузнать? Естественно на Twitter.com есть солидная справка, о том как работать с его API. Прочтя много много букв, обнаружил, что на данный день существует  2 способа авторизации, и один из них, основной,  на мой взгляд, крайне запутан и не пригоден для Desktop программ. Далее, я рассмотрю оба варианта предлагаемые разработчиками и попробую разобраться, что для нас лучше.

Работа с Twitter API — протоколы авторизации

Для начала, рассмотрим предлагаемый разработчиками по умолчанию, протокол OAuth.

OAuth — это открытый протокол авторизации, который позволяет предоставить третьей стороне доступ к защищенным ресурсам пользователя, без необходимости передавать ей (третьей стороне) логин и пароль.

OAuth предназначен, прежде всего, для веб-приложений, использование его в Desktop программах приносит в жизнь программиста и будущих пользователей кучу проблем. Разработчики Twitter изначально осознавали, что обычная работа по протоколу OAuth для программ не особо удобна, так как влечёт за собой огромную кучу кода. Подумав, они попытались облегчить жизнь программистам, введя PIN-код, который сокращает процесс авторизации и по их мнению, делает его проще. В действительности, я считаю это далеко не так.

Рассмотрим процесс авторизации в Twitter по шагам:

  • Приложение отправляет первый запрос (request_token).
  • Приложение должно отправить пользователя авторизоваться на Twitter.com.
  • После получения разрешения от пользователя, Twitter выдаст 6-ти значный PIN-код.
  • Пользователь должен скопировать полученный PIN-код и вернуться в приложение.
  • Приложение должно предложить пользователю ввести полученный ранее PIN-код.
  • Далее наша программа будет использовать PIN-код в качестве параметра oauth_verifier в запросе access_token.
  • В результате запроса access_token  нам, наконец-то, возвращаются данные для дальнейшей работы.

Т.е. разработчики Twitter API не только не упростили процесс работы с их API для Desktop приложений, убрав например авторизацию пользователя на их сайте, но и усложнили всё это дело введя PIN-код, который приходиться копировать пользователю, а как известно первый закон «юзабилити» — не напрягай пользователя не нужными действиями. Вся эта картина очень расстроила меня как программиста любящего доводить «юзабельность» в своих программах до идеала, хотя бы по моему мнению =)

Для чего собственно нужен xAuth?

xAuth — это открытый протокол для расширения возможностей авторизации пользователя в Интернете.

По сути, конкретно в случае работы с Твиттером, xAuth как раз таки избавляет нас от необходимости в PIN-коде, что, несомненно, радует. Разработчики Twitter API всё это внедрили специально для нас — любителей писать «настольные приложения» Доступ для веб-приложений закрыт, хотя на сайте поддержки Твиттер API написано, что есть возможность получить временный доступ, на время, которое необходимо для перевода вашего приложения со старого стандарта авторизации на OAuth. Но так как было это уже давно, то побаловаться вам вряд ли удастся. Подробнее почитать об этом протоколе можно на сайте xauth.org.

Что бы получить возможность использовать xAuth, необходимо отправить запрос в тех. поддержку, после чего вам разрешать или нет, использование данного метода авторизации. Я пока не пробовал им писать, но как только допишу программку до хоть какого-то внятного уровня, обязательно напишу им. Заставлять пользователя копировать PIN-код это издевательство. А пока, потерплю и буду использовать печальный OAuth с его PIN-кодами и прочими прибамбасами.

На этом моя первая статья на тему Twitter API vs Delphi подошла к концу, в следующей статье будет рассмотрена практическая реализация авторизации пользователя в twitter и отправка первого тестового сообщения.

P.S. Если у вас есть другие варианты, или я где то не так понял разработчиков и сморозил херню, что бывает, то пишите в комментариях.

Комментарии моих читателей

  1. Миха сказал:

    Статья ниочём. Код, мне нужен код! :)

  2. Stevie сказал:

    Hey, that’s pweofurl. Thanks for the news.

Прокомментируй, пожалуйста, мою заметку.