Twitter bot with OAuth in WSH

by piskec 7. september 2010 12:28

Ko je Twitter s 1.9.2010 ukinil basic avtentikacijo za pošiljanje čivkov, je po nekaterih govoricah nehalo čivkati kar okoli 35.000 aplikacij.

Od zdaj naprej se čivka le še s pomočjo OAuth načina avtentikacije, ki pa je kar dosti težji način od prejšnjega. Pri prejšnjem si namreč potreboval kake štiri vrstice programske kode, no, pri OAuth jih potrebuješ mnogo več.

Res je, da že obstaja ogromno knjižnic za skoraj vse programske jezike in da načeloma zadeva ne bi smela biti preveč komplicirana.

Pa je. In tudi skoraj še ne pomeni vseh jezikov, kaj šele skript in podobnega vmesnega šavja!

Klienti so seveda nekaj povsem drugega, potrebujejo polno delovanje, čisto druga pesem pa so bot-i, programi, ki avtomatsko pošiljajo stanja na Twitter. Teh zna biti kar precej, pravzaprav ogromno. So taki, ki pošiljajo direktna sporočila, so taki, ki odgovarjajo in so taki, ki pošiljajo informacije, naprimer TowerBridge. In kakor zgleda, je tudi on prenehal pošiljati informacije.

Mene se to pravzaprav tiče zaradi geoStik-a, ki pošilja informacije o vremenu, prometu, pajku, potresih in bogvečemu se bom še spomnil. Tudi ta je 1.9 crknil. Seveda smo bili o prehodu vsi obveščeni že mnogo prej, a kakor je navada povsod po svetu, je treba čakati do zadnjega dne. Sprememba namreč sploh ni lahka ali enostavna, potrebno se je kar poglobiti in razumeti nov način avtentikacije, kar ni prav lahko in povsem jasno je, da se vse skupaj prestavlja do takrat, ko teče voda v grlo.

Ker pa se sam nimam za programerja in zelo rad delam stvari na hitro, je moja izbira že od nekdaj vbscript. In to kar lepo v Windows Script Hostu. Povsod deluje in to brez česarkoli. Vse, kar potrebujem, je Notepad++, na katerega sem prešaltal po parih letih Notepad-a. Hja. Kar zna biti včasih super, enkratno in sploh in oh, včasih pa precej zoprno. Naprimer takrat, ko hočeš najti kako twitter knjižnico, ki bi podpirala COM, COM+ ali kaj podobnega. Najbližja je za VB .NET, ki pa se noče registrirat v sistemu, čeprav lahko včasih v sistemu registriraš tudi mokro cunjo. Ampak tega pa ne! In zato nimaš z njo kaj počet. No, resnici na kljubo - našel sem res eno knjižnico za Com+ ali .NET. Za 130$. Japajade, malce drago samo za pošiljanje statusa.

Najbližje je prišel Scott DeSapio s svojo aplikacijo za povsem klasični ASP. Oh, tole smo pa že zelo blizu, sem si rekel!

Pa niti ni bilo tako blizu. Zadeva je namreč malo mešana, vbscript in javascript, narejena pa je za celotni OAuth protokol. Kar je sicer dobro, je pa tudi mnogo preveč za vse tisto, kar bi jaz sam potreboval. Za bot potrebuješ le Single Access Token in je. Torej je večina kode odveč. Vprašanje seveda ostaja: katere kode?

Kakorkoli že, na koncu sem vse zmetal na kup, zbrisal tisto, kar mi ni bilo všeč, popravil nekatere objekte, ki jih seveda v WSHju ni in nastalo je nekaj, kar v bistvu deluje.

Skripta ni mišljena kot odprava vseh težav tega sveta, mišljena je le kot spodbuda nekomu, ki ima voljo in čas, da iz tega naprej naredi skripto, ki bo dostojna tudi za kakšnega programerja. Ko sem iskal vbscript zadevo, sem našel le tisoče oglasov za pre-programiranje bot-ov, programov in različnih aplikacij na OAuth! Načeloma bi moralo biti povpraševanje po čem takem veliko.

Seveda pa je treba najprej registrirat svojo aplikacijo v Twitterju. Dobit vse kode s Single Access Token, lahko pa se uporabi tudi activexpertsovo knjižnico le za OAuth avtorizacijo, da dobiš vse kode. Potem pa še vpisat vse te kode in to je to.

Kdor misli, da je eksplicitno naslavljanje spremenljivk pomembna zadeva, naj raje zamiži in gre naprej. Prav tako tisti, ki sploh kdaj pomisli na stavek Option Explicit. Vsi taki naj raje uporabijo supertweet.net, ki je pravzaprav enkratna zadeva, ravno prav za vse lene, počasne, nemarne, tiste brez časa, tiste brez volje itd.

Wsf končnica je zato, ker je zadeva jezikovno mešana - vbscript in javascript, ki bi se moral izvajat v asp-ju na strežniku, se tukaj izvaja seveda na klientu. Scott-u se ni dalo preprogramirati javascript podpisovalnih funkcij v vbscript. Komu pa bi se, poleg tega tudi ni imel kakšne velike potrebe po tem.

Twitter bot with OAuth in Windows Scripting Host download.

Vse zahvale seveda gredo seveda prvi implementaciji - Scott DeSapio.

 

Tags:

tehnika

Komentarji (6) -

Vreme
7. 09. 2010 15:45:47 #

Bi kaj napisal, pa pojma nimam o čem se gre ;)

piskec
7. 09. 2010 18:34:15 #

Rajko nič hudega, je pa vseeno lepo, da si se oglasil! Smile

Simon Forsyth
15. 09. 2010 22:32:41 #

Sorry for using English.
WARNING: you have left two of you personal keys in your WSH code script!

Additionally I have made some very small changes to the script to bring all of the data entry to the top. Please see the script on
http://hisdu.sph.uq.edu.au/twitter/tweetwsh.asp
Feel free to copy/change etc.

- Simon

Brad Berson
19. 06. 2013 21:15:50 #

Dear Aleš,

Sorry about the English but I don't trust Google Translate very much.

Thank you very much for this script.  I have been making much use of it.

Several months ago it broke when Twitter made some changes to their API.  I found a web page which described some new URLs, and they seem to fix the basic functionality of your script:

  Const TWITTER_OAUTH_URL_ACCESS = "https://api.twitter.com/oauth/access_token";
  Const TWITTER_OAUTH_URL_AUTHENTICATE = "https://api.twitter.com/oauth/authenticate";
  Const TWITTER_OAUTH_URL_REQUEST_TOKEN = "https://api.twitter.com/oauth/request_token";
  Const TWITTER_OAUTH_URL_UPDATE_STATUS = "api.twitter.com/1.1/statuses/update.json";

While debugging the script I found that the value returned in objXMLHTTP.ResponseText appears to be unprintable characters.  I found on the web some mention of the XMLHTTP object not being able to handle gzip values being returned by Twitter, but I am not sure how to go about fixing this.

Strange that it returned English readable errors when I was testing on a very old Windows 2000 server that had outdated certificates, so I am not even sure if this is a real problem.

Any advice will be greatly appreciated!

Sincerely,
Brad

Brad Berson
19. 06. 2013 21:16:42 #

I forgot to mention I am using the version posted here:

http://hisdu.sph.uq.edu.au/twitter/tweetwsh.asp

piskec
25. 06. 2013 10:03:50 #

Hi Brad,

yes, there were some changes in twitter APIs.

Unfortunately I'm not developing my script anymore. I just use supertweet.net which meets all of my need for now and I hope it will stay this way. Smile

Maybe you just use other response methods like objXMLHTTP.ResponseXml or ResponseBody? I never know which one is right for our Slovenian characters. I usually just try every possibility to find out which one is ok.

Best Regards,
Ales

Dodaj komentar

biuquote
  • Komentar
  • Predogled
Loading

AVTOR

Blog Podkleteno Nebo pišem Aleš Kermauner. Preko njega skozi osebno opažanje sveta skušam nekaj povedati. Včasih mi uspe, večkrat ne.

ZADNJE S TERENA

KRTINA V ŽIVO

OBJAVE

KOMENTARJI

Comment RSS

VREMENSKA NAPOVED ZEVS