A Twitter, a Messenger és a vuvuzela számomra egy kategória: mások által érthetetlen okokból imádott zajkeltő eszközök. Most az egyik projektünkben mégis azt kellett megoldanunk, hogy az alkalmazás időnként csiripeljen egyet a Twitteren.
Ennek megvalósítására nagyon sok példát lehet találni a neten, a legtöbb szépséghibája azonban, hogy a kihalásra ítélt basic hitelesítést használja, ami helyett már az OAuth a preferált. Az OAuthnak kétségkívül vannak előnyei, azonban a használata messze nem olyan egyszerű, mint a minden kliens által támogatott basic hitelesítésnek. Nézzük sorban!
Először is persze kell egy Twitter account, ahova az alkalmazás írogatni fog. Ezek után a Settings –> Connections oldalon regisztrálnunk kell a kliens alkalmazást. Nálunk egy webalkalmazásról volt szó, ezért az Application Type: Client, a Default Access Type pedig Read & Write lett. Bár a miénk egy webalkalmazás, azért lett a típusa Client és nem Browser, mert nem akartuk, hogy a felhasználó böngészője ide-oda ugráljon az saját weblapunk és a Twitter között, hanem az volt a cél, hogy a háttérben észrevétlenül kikerüljön egy csirip a Twitterre, ha történik valami a mi webhelyünkön. Fontos, hogy ha az alkalmazás csak posztol a Twitterre, de másra nem használja, akkor a Use Twitter for login opciót ne kapcsoljuk be. Ha ügyesek voltunk, akkor a varázsló végén kapunk egy oldalt a következő paraméterekkel:
- Consumer key
- Consumer secret
- Request token URL
- Access token URL
- Authorize URL
Ez mind kell az OAuth-hoz. Sőt, ha egy konkrét alkalmazás a kliens, akkor kell még 2 adat, egy Access token és egy Access token secret, nosza szerezzük meg őket! Látogassunk el a http://dev.twitter.com/apps oldalra (biztos be is van linkelve valahova, csak én nem találtam meg), majd kattintsunk az alkalmazásunk mellett található Edit details linkre, majd a betöltődő oldalon az Application detail, végül pedig a My Access Token linkre. Jegyezzük fel gondosan az oauth_token és oauth_token_secret értékeket.
Megvan tehát mindenünk, irány a Visual Studio, írhatjuk a kódunkat, az sokkal egyszerűbb lesz. Mivel az OAuth protokollt és a teljes Twitter API-t valahogy nem volt kedvem implementálni, némi keresgélés és tesztelés után a választásom a Twitterizerre esett.
Próbaként készítsünk egy konzol alkalmazást, referenciaként adjuk hozzá a Twitterizer2.dll-t és persze kell egy using Twitterizer; sor is.
Az a jó a Twitterizerben, hogy az egész OAuth mizéria számunkra ennyit jelent:
OAuthTokens tokens = new OAuthTokens() { ConsumerKey = @"jrnGHJxU...", ConsumerSecret = @"c0nsmR...", AccessToken = @"aCtKn...", AccessTokenSecret = @"scR3t..." };
Ezen kívül a központi objektum a TwitterStatus, például a korábbi csiripeket a GetHomeTimeLine függvénnyel kérdezhetjük le:
TwitterStatusCollection statuses = TwitterStatus.GetHomeTimeline( tokens ); foreach( TwitterStatus status in statuses ) { Console.WriteLine( status.Text ); }
Érdemes tudni, hogy az API-t nem lehet a végtelenségig megpörgetni, hanem mint sok más helyen, itt is vannak limitek, amiket így kérdezhetünk le:
TwitterRateLimitStatus limit = TwitterRateLimitStatus.GetStatus( tokens );
A kapott limit objektum ilyen értékeket tartalmaz:
{Twitterizer.TwitterRateLimitStatus} base {Twitterizer.Core.TwitterObject}: {Twitterizer.TwitterRateLimitStatus} HourlyLimit: 175 RemainingHits: 174 ResetTime: {2010.06.24. 18:05:52} ResetTimeString: "Thu Jun 24 16:05:52 +0000 2010"
Ezt a korlátot figyelembe véve már küldhetjük is az üzenetünket a nagyvilágnak:
TwitterStatus result = TwitterStatus.Update( tokens, "Működik!" );
A kapott TwitterStatus objektum tulajdonságaiból sok minden kiderül, talán a legfontosabb a poszt egyedi azonosítója (Id), illetve hogy belefértünk-e a 140 karakterbe (IsTruncated).
Jó csiripelést!