facebook status upade with vbscript

by piskec 11. marec 2011 16:01

Prav tako kot za Twitter, tudi za facebook ni dobiti kake skripte v vbscriptu. Zato se mora človek kar sam pobrigat...

Po dolgem času sem se namreč naveličal SelectiveTweets, ker lahko pač pošiljaš le statuse do 140 znakov in še manj - gredo iz smeri Twitterja. To potem na facebook-u mogoče zgleda kar malce nenavadno - da takole šparaš s prostorom.

Zato sem se odločil, da bo treba naredi enega bot-a, ki bo polnil direktno v geostik stran in ne bo šel več čez Twitter.

In potem sem se zakopal med razne dokumentacije, primere in podobne neumnosti. Povsem jasno, da za vb nikjer nič, za php pa na tone. Bo treba spet malo kombinirat. In sem.

Seveda na koncu vse zgleda mnogo lažje, ker ne prikažeš vseh tistih slepih ulic, v katerih si se znašel med postopkom. Ni tudi vseh napak, ki si jih zagrešil in si potem kar nekaj časa razbijal glavo, zakaj zadeva ne deluje kot bi morala. Tudi ni vseh neuspešnih poskusov, ko hočeš videti, kaj pa tole naredi?...

Na koncu sem vse skupaj naredil takole:

v facebooku je najprej potrebno narediti aplikacijo, dobiti moramo App ID, ta je še najbolj pomemben. Nastaviti moramo tudi spletno stran, nekaj v stilu http://www.zzzz.yyy. Pod Mobile and Devices pri nastavitvah aplikacije sem nastavil še, da je to Native vrsta aplikacije, čeprav nisem siguren ali ima to kak pomen.

Nato moramo izbrati pravilna dovoljenja, kar je še največji problem. Aplikaciji moramo namreč dovoliti, da šari po našem profilu. Če pa hočemo, da šari še po naših "pages", ki smo jih sami naredili oz. smo njihovi admini, pa je potrebno dovoliti posebej še to.

Tale dovoljenja so malce nerodna, ker jih ne moreš zbirat v kakem vmesniku, ampak jih moraš uredit napol ročno prek brskalnika.

Kaka dovoljenja imaš, lahko vidiš pri lastnih Nastavitvah zasebnosti, kjer lahko urediš nastavitve pri Aplikacijah in spletnih straneh. Na koncu mora biti zadeva približno takšna:

pravice pa se dodajajo v brskalniku z:

https://www.facebook.com/dialog/oauth?client_id=[clientID]&redirect_uri=http://www.zzzz.yyy&scope=status_update,publish_stream,offline_access,manage_pages

pravice so zahtevane pod "scope=". Za objavljanje na zidu je potrebno imeti prvi dve (status_update in publish_stream), za to, da lahko spreminjaš status tudi, ko nisi online prijavljen v facebook potrebuješ offline_access, za pošiljanje statusa na tvoje "pages" pa manage_pages. Več o tem na extended permissions. Jasno, da jih je cel kup. Client_id je id aplikacije, redirect_uri pa spletni naslov, ki je vpisan pri aplikaciji.

Nazaj dobimo redirect na stran www.zzzz.yyy, kjer je v Query URI vpisana še koda! Takole nekako:

http://www.zzzz.yyy/?code=1dc845bnhde5639f245346tfdf20c-225845%6Cr_KDUEMNkDUDJklif9ui7U

Kodo si spravimo, ker jo bomo takoj poslali naprej - z naslednjim naslovom gremo po access_token!

https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=[clientID]&redirect_uri=http://www.zzzz.yyyy&client_secret=koda_od_prej!

koda od prej je koda, ki smo jo dobili v prejšnjem stavku, client_id je ID aplikacije, redirect_id pa spet enak kot prej.

Dobimo zopet enak redirect kot zgoraj, vendar je v uriju zdaj access_token! Poleg je še expires_in=0, ki pa bi moral najbrž vedno biti 0, če le damo offline_access, drugače nam access_token poteče, kar pa ne bi bilo dobro. Ta access_token je potem dober za objavljanje statusa na osebnem profilu.

Za facebook strani (pages) pa je potrebno narediti še en korak:

https://graph.facebook.com/me/accounts?access_token=[moj_access_token]

dobimo žetone za vse strani in stvari, ki jih upravljamo. Nekako takole:

{
   "data": [
      {
         "name": "Vremensko dru\u0161tvo Zevs",
         "category": "Non-profit organization",
         "id": "350283986673",
         "access_token": "blablablabla1"
      },
      {
         "name": "geoStik",
         "category": "Website",
         "id": "175675457150",
         "access_token": "blablablabla2"
      },
      {
         "name": "gsStatusUpd",
         "category": "Application",
         "id": "208096835873502",
         "access_token": "blablablabla3"
      },
        ]
}

In to je to. Za svoj profil torej vzamemo svoj žeton (access_token), za strani, ki jih upravljamo pa enega od prej pridobljenih.

Končno gremo lahko k pisanju skripte. Ki je v osnovi seveda pravzaprav ni veliko in bi za wsh zgledala lahko tudi takole:

--------

Set http=Wscript.CreateObject("Winhttp.winhttprequest.5.1")

http.Open "POST", "https://graph.facebook.com/[PAGE_ID]/feed", false
http.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

http.Send "message=Avtomatsko objavljanje...&access_token=[access_token]"

Set http=Nothing

--------

Potem pa lahko poljubno zakompliciramo, z enkodiranjem čšžjev, z error handlingom, z... ah, programerji vedno kaj najdejo!

Na koncu sploh ni zapleteno, res ne vem, zakaj sem se moral cel dan prebijat čez tisoče strani dokumentacije, primerov, ki ne delujejo, in čez miljone php skript. Skoraj vse je le stvar pravic.

Takole pa lahko z vsake win mašine takoj priletiš na svoj zid v facebooku. Za avtomatske zadeve seveda priročno.

Tags:

geostik | tehnika

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