Твиттер, «В Контакте», Facebook… Прочитал френд-ленты во всех сетях — и день прошел бездарно. Как быть? Как за всем уследить? Пожалуй, решение одно — автоматизация и фильтрация лишнего контента. Как это сделать? Как подружить свою программу с чужими проектами? Об этом и поговорим в статье.

 

Что значит «взаимодействовать»?

Изначально социальные сети строились как отдельные проекты. Об объединении с похожими ресурсами не было и речи. Наверное, основной идеей был охват пользователей. «Зачем делиться посетителями, если их можно собрать всех?», — думали многие. К счастью, время делает свое дело, и после старта в России «В Контакте» стали появляется альтернативы. Причем альтернативы с хорошим финансированием — «Мой мир», «Одноклассники» и т.д. В основе всех этих проектов лежит одна и та же идея. Тем не менее, каждый из них старается выделиться и предоставить пользователю уникальные фишки. Вот бедным пользователям и приходится разрываться. В одной сети — куча друзей, в другой — до фига левого контента, в третьей — тусуются заказчики и работодатели…

Выбрать для себя один сервис на все случаи жизни уже нереально. Разработчики социальных сетей (а также различных полезных сервисов) это поняли и сейчас активно улучшают интерфейсы для взаимодействия с другими сервисами и программами. Выгода очевидна для всех. Пользователю не нужно разрываться между разными проектами. С помощью специальных средств он может заходить в один сервис, но всегда быть в курсе того, что творится на другом. Вот тебе реальный пример. На портале сообщества www.vr-online.ru настроена интеграция с такими социальными сетями, как Twitter и «В Контакте». Стоило один раз все поднять — и теперь при добавлении нового контента его анонс мгновенно улетает в твиттер и контакт. Вроде мелочь, а в итоге — пользователи обеих социальных сетей сразу становятся в курсе обновления. Удобно?! Думаю, да.

Честно говоря, это еще мелочи. Экспорт материала — это лишь вершина айсберга. Главная вкусность заключается в возможности использования системы авторизации социальных сетей для своего проекта. Проще всего это представить на примере web-проекта. Не буду далеко ходить и в качестве примера вновь назову свой любимый www.vr-online.ru.

Однажды нам потребовалось привлечь новых посетителей. Привлекать решили из популярной социальной сети «В Контакте». Найти людей, которых может заинтересовать проект, не проблема. Гораздо труднее «сдвинуть» их с места и добиться того, чтобы они зарегистрировались на нашем ресурсе (ну и стали его посещать). Сегодня каждый второй ресурс требует регистрации, и многие уже задолбались выдумывать себе разные логины и пароли. Наш ресурс в этом плане не отличается оригинальностью. Чтобы упростить дорогим посетителям жизнь, мы решили настроить взаимодействие сайта с социальной сетью «В Контакте» и обеспечить пользователям возможность входить на наш ресурс путем авторизации через контакт. Другими словами, для входа на наш сайт пользователю требуется авторизоваться во «В контакте» — и все.

Результат не заставил себя долго ждать — новые пользователи стали охотно пользоваться этой фичей. Сейчас ты можешь подумать, что подобные взаимодействия актуальны лишь для сайтов, а для десктопных приложений действуют иные правила. Это не так. Ты запросто можешь использовать подобные трюки и в десктопных приложениях. Допустим, ты решил закодить очередной и неповторимый ICQ-клиент (Хотя, кто в наши дни еще пользуется аськой?). Однозначно ты получишь дополнительных юзеров, если снабдишь свое творение поддержкой обмена сообщениями через «В Контакте», «FB» и т.д. Сделаешь все это красиво и качественно — твоими пользователями станут не только асечники, но и контактники (как пример). Помни, что рост количества пользователей твоего проекта существенно увеличивает шанс заработать на нем кругленькую сумму американских президентов.

Во всех предыдущих абзацах я только и делал, что говорил о социальных сетях. Однако, все вышеописанное можно также отнести и к другим сервисам. На просторах интернета есть много интересных проектов, которые готовы предоставить доступ к своему функционалу. Тебе лишь остается придумать, как этим можно воспользоваться и получить максимальную выгоду. Не нужно изобретать очередной велосипед — лучше взять готовую двухколесную хреновину и прикрутить к ней атомную тур бину. Далее в статье я буду рассказывать не только о работе с соцсетями, но и с другими полезными web-сервисами.

 

Это можно делать по-разному

Разработка приложений, направленных на взаимодействие с социальными сетями, практически ничем не отличается от программирования других сетевых приложений. В твоем распоряжении — бесконечный полигон возможных сценариев. Например, ты можешь блеснуть знаниями и быстренько все реализовать при помощи уже знакомых сокетов и метода научного тыка. То есть, берем анализаторы трафика и натравливаем их на бродилку. Дальше смотрим, какие запросы отправляет браузер на сайт нужного сервиса и эмулируем все это дело в твоей программе. Способ, несомненно, надежный, но крайне трудный для реализации. Одна отладка стадии работы с сокетами чего только стоит. Я уже молчу про бесконечные разборы полетов с анализом запросов.

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

Быть может, есть способ еще проще? Ну ты и лентяй! Шучу-шучу, не мне тебя корить, я сам ленивый. К тому же, более простой способ действительно есть. Не ты первый и не ты последний программист, решивший написать программу для работы с Х-сервисом. Этим вопросом озадачивались многие программисты, и самые матерые из них уже давно выплеснули свой опыт в универсальные библиотеки и модули. Такое добро реально найти практически для всех популярных языков программирования. Проще этого способа, пожалуй, нет ничего.

 

Вместительное файловое хранилище

Уже два года я пользуюсь услугами чудесного бесплатного сервиса — DropBox (dropbox.com). Если еще есть танкисты, которые не слышали про DropBox, рассказываю. DropBox — это сервис, позволяющий поднять синхронизацию файлов между всеми своими компьютерами. Твои файлы хранятся на серверах DropBox и автоматически копируются на компьютеры, участвующие в синхронизации. Получается некий файлообменник.

Только в отличие от альтернативных проектов, DropBox предоставляет достаточно шикарную бесплатную версию. Суди сам, тебе дают 2 Гб места под файлы и полнофункциональную версию клиента. Что?! Мало места? Да, сегодня объемы нужной информации зашкаливают, поэтому двух гигабайт может и не хватить, но это не означает, что DropBox тебе не подойдет. Ты можешь по дешевке взять платный тариф или немного прокачать свой бесплатный аккаунт. Разработчики регулярно проводят всякие конкурсы и мероприятия, позволяющие без особых затруднений поднять дополнительное место. Например, я уже прокачал свою учетку до пяти гигабайт. Ладно, вернемся к нашим баранам. Я уже сказал, что DropBox — замечательный сервис, грех не воспользоваться им в своих личных целях. К счастью, разработчики уже давно открыли API, а энтузиасты даже выпустили свои варианты классов и библиотек. Поскольку мы ориентируемся на C#, то нашим выбором станет надстройка SharpBox (sharpbox.codeplex.com). Это бесплатный набор классов, позволяющий эффективно использовать функции DropBox из своего приложения.

Проект активно развивается и на данный момент уже может похвастаться полной поддержкой всех функций DropBox. Одно время при использовании библиотеки возникали проблемы, но версия от 31 декабря 2010 года исправила эту досадную ситуацию. Я не буду расписывать примеры от начала до конца, а буду приводить лишь небольшие интересные отрывки.

Дописать их ты всегда сможешь, воспользовавшись документацией и демками, идущими в комплекте. Перед тем как приступить к созданию своего первого приложения, взаимодействующего с DropBox, тебе необходимо обзавестись аккаунтом на этом сервисе и зарегистрировать новое приложение в личном кабинете (https://www.dropbox.com/developers/apps). После регистрации нового application ты получишь AppKey и AppSecret. Это уникальные ключи, без них твое приложение никогда не заработает. Итак, как только создашь новое приложение, можешь попробовать запустить VS, подключить к ней SharpBox и накидать небольшой примерчик, демонстрирующий возможности библиотеки. Код моего такого приложения приведен во врезке «Знакомимся с DropBox» и снабжен обильными комментариями. В своем примере я демонстрирую загрузку и закачку файла с сервера DropBox. Остальные операции выполняются аналогичным образом. Подробности смотри в официальных примерах.

 

Сишарпная щебеталка

«Он слишком прост, чтобы в нем долго копаться» ©. Это высказывание можно смело отнести к опопсевшему сегодня сервису микроблогинга — Twitter. Реально, заморские перцы из, казалось бы, банального проекта сделали сервис, который завоевал мир. Сначала в нем были лишь гики, затем пришли домохозяйки. Еще позже в скворечник заджойнились знаменитости, и самыми последними подтянулись чиновники. Не уметь программировать приложения для работы с данным сервисом — верх кощунства. Сишарп-разработчикам как всегда повезло чуточку больше, чем другим. Уже больше года развивается одна из лучших клиентских библиотек для взаимодействия с твиттером — TwitterSharp. Среди подобных проектов этот выделяется в первую очередь тем, что прекрасно подходит как для .NET (2-4), Mono 2.6, так и для новомодного Windows Phone 7. Поддержка работы под WP7 — одна из главных вкусностей. Эта ОС вышла совсем недавно, приложений под нее почти нет. У тебя еще есть все шансы создать неповторимый Twitter-клиент и завоевать любовь пользователей. Где найти лучшее применение библиотеке Twitter-Sharp — ты решишь сам, а я продемонстрирую, как с ее помощью авторизоваться в чирикалке, используя OAuth, и получить список сообщений своей ленты. Мой код ты найдешь во врезках с говорящими названиями. Все необходимые пояснения я, как обычно, привел в комментариях. Полное описание классов смотри в… исходниках. Увы, пока хорошей документации к библиотеке нет.

 

«В контакте» под чутким надзором

«В Контакте» — пожалуй, самая популярная в России социальная сеть. Одни используют ее для бесконечного трепа с друзьями, а другие, более продвинутые, — как площадку для продажи или рекламы своих товаров и услуг. Кроме того, «В Контакте» может похвастаться несметным количество не совсем легального медийного контента. Несмотря на популярность, в плане кодинга контакт выглядит очень тухло. За все время существования этой сети так и не появилось качественного SDK и качественной библиотеки для взаимодействия сторонних приложений с функциями социальной сети. Нет, нельзя сказать, что энтузиасты не предпринимали попыток создать шедевр. Попыток были, но практически все проекты не могут выйти из стадии Alfa, либо стали заброшенными. Из того, что есть, наиболее выгодно выделяется проект Silverlight vkontakte API (silverlightvkapi.codeplex.com). Его возможностей вполне хватит для решения типовых задач (публикация на стену, загрузка фотографий и т.д.).

Примеры объемны для публикации, смотри исходники на диске.

 

Дружим с Flickr

Flickr не является социальной сетью, это просто сервис для хранения фотографий и видеороликов, созданный компанией Yahoo. Проект имеет как платную, так и бесплатную версии. У последней есть ряд досадных ограничений, но это не помешало фликру завоевать популярность среди блогеров. Если верить данным из Wikipedia, то на конец сентября прошлого года база фликра содержала около пяти миллиардов изображений.

В отличие от неудобного в плане программирования «В Контакте», для работы с фликром на CodePlex’е есть библиотека FlickrNET API Library (flickrnet.codeplex.com). После подключения ее к своему проекту, работа с Flickr’ом сведется к вызову нескольких методов. Примеры опять же не привожу, они ждут тебя на DVD.

 

Рулим Facebook

Facebook — сеть малоизвестная, и ты наверняка о ней ничего не слышал :). Возможно, тебе захочется с ней познакомиться только потому, что в ней отвисает почти вся команда Хакера. В отличие от «В Контакте», для Facebook’а существует множество вариантов SDK, модулей и т.д. Стоит зайти на тот же CodePlex, вбить в поиск «Facebook» — и перед тобой вывалится несколько страниц с разными модулями/ библиотеками. Среди такого количества вариантов нетрудно и потеряться. Особенно напрягает, что многие предложенные решения в настоящий момент уже не работают. Чтобы ты не тратил свое драгоценное время зря, я сразу рекомендую тебе присмотреться к библиотеке Facebook С# SDK (facebooksdk.codeplex.com) и Facebook Developer Tookit (facebooktoolkit.codeplex.com). С их помощью ты за считанные минуты научишься создавать десктопные/web/Silverlight-приложения, взаимодействующие с Facebook. Добавь ко всему этому возможность работы под Windows Phone 7, и становится однозначно понятно, что обе библиотеки must have!

Обе библиотеки хороши, но я больше предпочитаю использовать вторую. Почему? Нет, я не имею ничего против Facebook C# SDK, но с FDT я познакомился немного раньше и успел привыкнуть к ней. Для того чтобы начать разработку своего первого проекта для Facebook, тебе потребуется пройти на www.facebook.com/#!/developers/ и создать новый application. Подобную процедуру ты выполнял при разработке приложения для DropBox. Выполнив эту нехитрую операцию, ты получишь ключ, который и будешь использовать в проекте. Ну а дальше все стандартно. Имея на руках ключ приложения и FDT, ты можешь приступать к разработке своих программ. В FDT есть все необходимое для организации поиска друзей, отправки сообщений и т.д. Длинных примеров кода приводить не стану. Где их найти — сам знаешь.

 

Заключение

На этом я хочу закончить статью и пожелать тебе оставаться все время в теме. Смотри, что сделали разработчики, качай SDK и пробуй показать пользователям уже готовые идеи с другой стороны. Помни, что пользователи согласны платить не только за абсолютно новые фишки, но и красивые обертки для давно существующих. Прояви фантазию и будь уверен, что твои работы будут замечены. На этом разреши попрощаться. Увидимся в будущем!

 

Читаем твит-ленту

using TweetSharp;
// Создаем объект типа TwitterService
// при помощи данного объекта мы будем читать
// тайм-ленту
TwitterService myTwitterService = new TwitterService();
IEnumerable<TwitterStatus> tweets = myTwitterService.ListTweetsOnPublicTimeline();
//Перебираем всю ленту и выводим. В консоль/форму
foreach (var tweet in tweets)
{
Console.WriteLine("{0} — "{1}"", tweet.User.ScreenName, tweet.Text);
}

 

Ссылки по теме

  • sharpbox.codeplex.com/documentation — исходники примеров, демонстрирующие взаимодействие с DropBox при помощи библиотеки SharpBox.
  • sharpbox.codeplex.com — здесь хостится библиотека DropBox.
  • tweetsharp.codeplex.com — месторасположение библиотеки tweetsharp.
  • shorturlcreator.codeplex.com — сервисы сокращалок ссылок сегодня очень популярны. Хочешь создать удобную программу для работы с ними? Тебе непременно нужно ознакомиться с этим примером.
  • svapi.codeplex.com — SilverLight API Connector для «В Контакте».
  • ggltranslate.codeplex.com — пример взаимодействия с сервисом переводов от Google.
  • vkontakte.ru/developers.php — официальная информация для разработчиков приложений для «В Контакте».
  • vr-online.ru/page/vr-online-dekabr-yanvar-3171 — в этом номере бесплатного журнала для программистов VROnline есть статья, рассказывающая про взаимодействие с сервисом перевода от Google без использования сторонних библиотек. Рекомендую ознакомиться.
 

Знакомимся с Dropbox

// Инициализация объекта типа DropBox.DropBoxCredentials
// Объект используется для установки значений, используемых
// для доступа к учетной записи DropBox
DropBox.DropBoxCredentials myCredentials = new AppLimit. CloudComputing.SharpBox.DropBox.DropBoxCredentials();
// Ключ, полученный при регистрации нового приложения
myCredentials.ConsumerKey = "kxsdqll7p11dtcy";
// Секретная фраза, полученная при регистрации
myCredentials.ConsumerSecret = "dhw5dvlrmxw62oe";
// Вводим данные своего аккаунта
// (имя пользователя и пароль)
myCredentials.UserName = "anton@gmail.com";
myCredentials.Password = "13241414";
// Получаем стандартную конфигурацию хранилища DP
DropBox.DropBoxConfi guration myConfi guration = DropBox.DropBoxConfi guration.GetStandardConfi guration();
CloudStorage myStorage = new CloudStorage();
// Если открыть хранилище не удалось,
// то прекращаем работу
if (!myStorage.Open(myConfi guration, myCredentials))
{
MsgBox("Не удалось открыть хранилище!");
return;
}
//Если все ok, то можем приступать к загрузке/выгрузке файлов
myStorage.UploadFile("article_for_x.txt", "/MyPublicDirectory");
myStorage.DownloadFile("/MyPubarticle_for_x.txt ", "C:\");
// В конце необходимо проверить открытость
// хранилища
// Если оно открыто, то принудительно закрываем
if (myStorage.IsOpened)
{
myStorage.Close();
}

 

Auth авторизация

using TweetSharp;
TwitterService tws = new TwitterService("твойключ", "твойсекрет");
//Получаем ключ
OAuthRequestToken reqToken = tws.GetRequestToken();
//Перенаправляем на url oAuth авторизации
Uri uri = tws.GetAuthorizationUri(reqToken);
Process.Start(uri.ToString());
//Обмен запрошенного ключа на ключ доступа
string verifi er = "123456"; //Указываем верификатор
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);
//Производим аутентификацию и получаем лист упоминаний
service.AuthenticateWith(access.Token, access. TokenSecret);
IEnumerable<TwitterStatus> mentions = service.ListTweetsMentioningMe();

Оставить мнение

Check Also

ОС максимальной секретности. Выбираем дистрибутив для обхода блокировок и защиты от слежки

Возможно, ты уже пользовался дистрибутивом Tails или даже запускаешь его ежедневно. Но это…