Pull to refresh

Интегрируемся с Twitter

.NET *
Давайте сначала обозначим, что такое Twitter.

Twitter – это бесплатный интернет-сервис, представляющий собой систему микроблогов, позволяющий пользователям отправлять короткие текстовые заметки (до 140 символов), используя веб-интерфейс, SMS, службы мгновенных сообщений или сторонние программы-клиенты (http://ru.wikipedia.org).

Второй вопрос, а зачем он нужен вообще? Просто общаться с друзьями? Это как вариант, но все таки существуют более удобные сервисы для обмена сообщениями. Скорее всего для публикацией и слежением за новостями (как личные, так и публичные).

Итак, если у вас есть некий интернет магазин, или сайт компании, на котором вы публикуете новости, то можно создать и twitter аккаунт, для того, чтобы дублировать туда информацию о выходе новых публикаций на сайте (как новости, так и поступление новой продукции), или вы можете прикрутить к своему блогу возможность публиковать в твиттере информацию о поступлении новых топиков (есть готовые сервисы, как http://twittsync.com/, работает на Microsoft Azure). Так же можно использовать твиттер “не по назначению” – вы можете создать некий пустой аккаунт, который будет публиковать, к примеру, состояние вашего компьютера, через Direct Message на ваш аккаунт или просто к себе на главную – один из примеров: ваш провайдер требует деньги за белый IP адрес, в противном случае он назначает вам адрес динамически, и каждые 24 часа вас отрубает (это для тех, кто использует роутеры) и вы хотите в любое время (например, с работы) узнавать какой у вас IP адрес для того чтобы зайти на свой домашний компьютер удаленно.

Следующий вопрос, сложно ли это сделать?

Легко! Можно пойти немного по более сложному пути и изучать TwitterAPI самому, тогда вам ни от чего не нужно будет зависеть, для начала тогда нужно воспользоваться статьей – Michael C. Kennedy – Building a Twitter Application in .NET, путь попроще – использовать готовое решение LINQ to Twitter (я им и воспользуюсь).


Итак, давайте начнем с простейшего примера. Создадим консольное приложение со следующим кодом:

using System; <br>using System.Linq; <br>using LinqToTwitter; <br><br>namespace TwitterIntegration <br>{ <br>  internal class Program <br>  { <br>    private static void Main() <br>    { <br>      // Класс, отвечающий за авторизацию <br>      UsernamePasswordAuthorization auth = new UsernamePasswordAuthorization <br>                           { <br>                             UserName = "UserName", <br>                             Password = "Password" <br>                           }; <br><br>      // Основной провайдер для работы с twitter <br>      TwitterContext twitterCtx = new TwitterContext(auth); <br>      // Осуществляем авторизацию <br>      auth.SignOn(); <br><br>      // Берем twit'ы, оставленные нашими друзьями (за кем мы следуем) <br>      var publicTweets = <br>        from tweet in twitterCtx.Status <br>        where tweet.Type == StatusType.Friends <br>        select tweet; <br><br>      // Печатаем результат на экран <br>      publicTweets.ToList().ForEach( <br>        tweet => Console.WriteLine( <br>               "User Name: {0}, Tweet: {1}", tweet.User.Name, tweet.Text)); <br><br><br>      auth.SignOff(); <br><br>      Console.WriteLine("Press any key to end this demo."); <br>      Console.ReadKey(); <br>    } <br>  } <br>}<br><br>* This source code was highlighted with Source Code Highlighter.


Неправда ли все получается очень просто (не забудьте заменить в вашем случае пользователя и пароль). Причем TwitterContext может так же легко работать и с http://jtweeter.com и http://identi.ca (такими же сайтами для микроблогов).

Но давайте вернемся к нашему сценарию. Мы задумали публиковать наш IP адрес. Первый вопрос – как узнать IP адрес нашего компьютера, для этого можно обратиться к статье Get the IP address in a Windows application на geekpedia – воспользуемся последним способом (который использует сервис http://www.geekpedia.com/ip.php), так как этот способ учитывает так же то, что ваш компьютер может быть направлен через роутер (как у меня):

private static string GetIpAddress() <br>{ <br>  WebClient myWebClient = new WebClient(); <br>  Stream myStream = myWebClient.OpenRead("http://www.geekpedia.com/ip.php"); <br>  StreamReader myStreamReader = new StreamReader(myStream); <br>  return myStreamReader.ReadToEnd(); <br>}<br><br>* This source code was highlighted with Source Code Highlighter.


В данному методе используются классы из именованных пространств System.IO и System.Net (не забудьте подключить using’и). Создаем новый проект – Windows Service, добавим в него сразу информацию об установке (How to: Add Installers to Your Service Application). Воспользуемся классом Timer (из System.Timers), который будет каждые 60 минут вызывать метод, который и будет публиковать IP адрес:

private static void TwittIpAddress(object sender, ElapsedEventArgs e) <br>{ <br>  UsernamePasswordAuthorization auth = new UsernamePasswordAuthorization <br>                       { <br>                         UserName = "UserName", <br>                         Password = "Password" <br>                       }; <br><br>  // Основной провайдер для работы с twitter <br>  TwitterContext twitterCtx = new TwitterContext(auth); <br>  // Осуществляем авторизацию <br>  auth.SignOn(); <br><br>  string message = string.Format("My IP Address is: {0}", GetIpAddress()); <br><br>  //Пишем новый tweet <br>  twitterCtx.UpdateStatus(message); <br><br>  //Отправляем сообщение на аккаунт <br>  twitterCtx.NewDirectMessage("ToUserName", message); <br><br>  auth.SignOff(); <br>}<br><br>* This source code was highlighted with Source Code Highlighter.


В данном методе мы сначала обновляем статус аккаунта UserName, а так же отправляем сообщение пользователю ToUserName. Чтобы установить Windows Service воспользуйтесь утилитой InstallUtil.

Как видите интегрировать свое приложение или веб-сайт с модным Twitter’ом очень просто. Более того, таким способом можно повышать свои шансы во всяческих конкурсах, вроде розыгрыша приглашений в офис Google (а похожих розыгрышей бывает много). Пример приложения можно скачать ниже.

zipArchve

Progg it
Tags:
Hubs:
Total votes 48: ↑29 and ↓19 +10
Views 2.1K
Comments Comments 11