Задание: создать клиент Twitter’а (OAuth и REST API)

Недавно проходил собеседование на должность удаленного Android-разработчика. Дали следующее тестовой задание: Задание Создать простой twitter-клиент. Приложение должно содержать следующие функции:
  • Отображение списка твитов авторизованного пользователя (основной экран)
  • Имена пользователей должны выделятся в тексте твита и при нажатии на имя пользователя должен отображаться список твиттов этого пользователя.
  • Создание нового твита (максимум 140 символов)
Требования:
  1. Реализация на языке Java.
  2. Разрешается использовать любые библиотеки кроме непосредственно twitter-библиотеки.
После выполнения задания нужно прислать код (либо ссылку на репозитоий на GitHub), указав количество потраченного на задание времени. Информация для чтения Twitter API: https://dev.twitter.com/docs/api От себя скажу, что задание очень понравилось. На всё про всё потратил около двух суток. С твиттером я был знаком очень слабо: раньше когда-то регистрировался, но толком не пользовался. Также у меня не было опыта по работе с OAuth (википедия) и REST API (википедия). Разобравшись с OAuth авторизацией и REST API, вы сможете по такому же принципу интегрироваться почти со всеми порталами и соц. сетями. Ниже приведу скриншоты того, что получилось. 1) При первом запуске приложение перенаправляет пользователя в браузер для авторизации. После успешной авторизации браузер обратно передает управление приложению. 01 2) Открывается главное окно с твитами текущего пользователя: 02 3) Если нажать на имя пользователя, то откроются твиты этого пользователя: 03 4) Нажав кнопку "Новый твит", откроете диалоговое окно ввода текста нового твита: 04 5) Нажав кнопку "Отправить", твит появиться в твитах авторизованного пользователя: 06 6) По нажатию кнопки "Выход" приложение снова откроет странице авторизации, в которой можно будет залогиниться под другим пользователем: 07 При написании приложения очень помог код с GitHub'а: https://github.com/ddewaele/AndroidTwitterSample Код моего приложения также есть на GitHub: https://github.com/Nyquest/twitterclient Можно также скачать исходный код отсюда APK-файл: скачать Подписанный APK-файл: скачать

4 комментария

  1. Косточкин:

    Здравствуйте. По рабочей необходимости приходиться осваивать разработку приложений на android.
    C java знаком поверхностно. Мне понравился ваш пример.
    Хотел спросить, какую библиотеку вы использовали, или вы все сами написали?
    И еще, почему именно так вы записали callback url:
    String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + SCHEME_DELIM + OAUTH_CALLBACK_HOST ?
    И в манифесте <data android:scheme="x-oauthflow-twitter" android:host="callback".
    x-oauthflow-twitter — как я понимаю это название приложения…
    А зачем android:host="callback?
    А можно было написать просто ?

    • Naik:

      Добрый день! Точно уже не помню тонкости реализации… Дело в том, что приложение использует OAUTH авторизацию, которая происходит через браузер, т.е. внешнее приложение по отношению к приложению, поэтому после авторизации в браузере, браузер должен вернуть результат авторизации назад в приложение, а для этого используется обратный вызов(Callback). Браузер не может обратиться к Activity напрямую, а только косвенно, через параметры в <intent-filter>, другими словами, обращение идет по названию схемы(android:scheme) и хосту(android:host).

  2. Косточкин:

    вы подцепили два jar файла signpost… для реализации протокола http, и все, да?

    • Naik:

      signpost-commonshttp4-1.2.1.2.jar и signpost-core-1.2.1.2.jar нужны для работы с OAUTH.
      Для работы с OAUTH идет следующий импорт: import oauth.signpost*.;

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.