Задание: создать клиент 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 для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.