spájame
slovenskú
IT komunitu
pridaj sa
Registrácia · Login

František Čaník 21.5.2012
Hodnoť článok:
0 0

Facebook: Obsah len pre fanúšikov?

V našej SK developerskej skupine na Facebook-u som sa stretával s veľmi častou otázkou, ktorá smerovala práve k tomu, aby sme napísali niečo o tom, ako rozlišovať fanúšikov a nefanušíkov. Tak si poďme napísať pár riadkov k tejto téme.

V prvom rade je nutné si uvedomiť, že k tomuto nepotrebujeme od používateľa žiadne práva, nakoľko túto informáciu nám poskytuje samostatný "podpísaný request" (signed_request) od Facebook-u. Ten obsahuje základné údaje o používateľovi a teda aj o stránke, na ktorej sa nachádza.

Ak správne rozparsujete signed_request, dostanete údaje, ktoré obsahujú:

  • code
    kód podľa OAuth
  • algorithm
    najčastejšie HMAC-SHA256
  • user_id
    ID používateľa (facebook ID)
  • user
    základné údaje o užívateľovi, akými je jazyková verzia, ktorú na FB používa (locale), krajina (country) a vek (obsahuje rozmedzie veku min-max), konkrétnejšie údaje získate len ak získate povolenie pre aplikáciu o prístup k daným údajom
  • page
    ktorý obsahuje pre nás podstatné údaje ako napríklad liked, kde sa prenáša 0/1 ak užívateľ dal stránke LIKE, admin, kde je tiež 0/1 ak daný používateľ je pre danú stránku administrátorom.

Poďme rozlišovať obsah

Aby som nepísal zbytočne komplikované veci, berme to tak, že poznáme nejakú tú premennú, ktorú sme získali pomocou rozparsovania tzv. SIGNED_REQUEST-u, ktorý posiela Facebook každej stránke, ktorú načítava a teda aj do našej PAGE TAB-y. Volajme túto premennú ako $signed.

Ak chceme rozlišovať obsah podľa toho, či je napríklad používateľ admin-om, alebo klikol na LIKE, tak nám stačí jednoduchá podmienka.

<?php
if($signed['page']['liked'] == 1) {
/*
 * ...
 * kód, ktorý sa vykoná len ak je to používateľ, čo dal like stránke...
 * ...
 */
} else {
/*
 * ...
 * kód, ktorý sa vykoná ak užívateľ ešte musí lajkovať...
 * ...
 */

}
?>

Rovnako funguje aj kód pre overenie, či je užívateľ administrátorom. To sa hodí, ak chcete administrátorom povoliť nejaké menu navyše, pomocou ktorého vedia robiť napríklad úpravy v obsahu a tak podobne.

Práca so Signed Request-om

function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}

Verím, že táto maličkosť pomohla a ak nie, tak zopár zdrojov k tomu, ako pracovať s page tab-om a signed_request-om:

František Čaník František Čaník

Programátor, webdesigner a webdeveloper niekoľkých webových projektov. Má za sebou prácu v reklamnej agentúre, médiách a na rôznych pozíciách v oblasti IT.


Hodnoť článok:
0 0

25 komentárov k článku:

Komentovať môžu iba prihlásení

Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)

Prihlás sa tu, ak už máš profil na Zajtra.sk:


Zabudol som heslo

0 0 Zoltán Mitlík 22.6.2012 10:55:29
Zalozil som novu temu vo fore ohladom FB a jeho bugov chyb atd. Aj som tam napisal jednu vec ktora sa nam udiala z noci na dnes a nevieme preco...Rad by som ak by sme tam mohli a aj ostatni komunikovat ohladom facebook zalezitosti a vzajomne si pomahat, ak by bol zaujem.. :)
0 0 František Čaník 21.6.2012 21:36:30
Miloš: Poväčšinou som jedným z tých, čo nahlasuje appky, ktoré však porušujú pravidlá globálne v štýle hromadných a masových rozmerov. Keď nájdem appku, ktorá poruší jedno z 37 pravidiel, tak to proste neriešim a facebook je rovnako benevolentný v tomto. Samozrejme, pokiaľ sa nájdu užívatelia, čo appku nahlasujú a dosiahne appka určitý level spamovosti (nie virálnosti), bloknú celú appku a developer dostane mail o tom, že si má dávať pozor. Tuším, že má 14 dní na odstránenie problému v op. prípade celú appku mažú.
0 0 Miloš 21.6.2012 07:33:10
Že by sa slovenské aplikácie neriešili, to sa mi nezdá. V diskusiách pod článkami o pravidlách Facebooku som si toho o zablokovaní slovenských aplikácií prečítal dosť. Facebook je dosť nekompromisný, často totiž zablokujú aj kompletne celý účet používateľa. Dokonca mi to cca pred rokom potvrdil aj niekto, komu Facebook zablokoval tstovaciu aplikáciu. No a nemyslím, že je vhodné porušovať pravidlá z dôvodu, že Facebook aj tak na to kašle. Skôr si myslím, že mechanizmus nahlasovania aplikácií je zbytočne zložitý. To mnohých odradí a robot Facebooku tiež nie je schopný skontrolovať všetko. Osobne by som tiež aplikáciu nenahlasoval, lebo je to veľa klikania a vypisovania.
0 0 František Čaník 21.6.2012 00:47:59
Miloš: reálne... 89% aplikacii neriesi pravidlo a facebook o tom vie. Sam dokonca mal niekolko aplikacii, ktore porusovali ich vlastne pravidla a nasledne ich stiahli alebo ich platnost skoncila... V kazdom pripade, SK trh nie je tak obrovsky, aby sa tym vobec niekto zaoberal, na co "vsadza" velmi vela vyvojarov a firiem, ktore skusaju prerazit na facebook-u.

Like pred spustenim aplikacie? Je vzdy vecou konkretneho riesenia, a toho, ako je vobec aplikacia osetrena zo strany vyvoju. Ano, su appky, ktore riesia kontrolu priamo cez narp. FQL requesty no su aj appky, ktore spolahlivo funguju na datach posielanych zo signed_request-u, ktory je rozparsovatelny (zial funguje len pre "bookmarky" a tzv. PAGE TAB-y. Canvas page neposiela parameter o ID stranky a teda ani o tom, ze ci uzivatel nieco lajkuje alebo nie. (co je skoda).
0 0 Miloš 20.6.2012 19:51:44
A to hlavné som nenapísal. V aplikácii Najlepší šéf sa dá využívaním aplikácie niečo vyhrať, čiže spadá pod súťaže a LIKE je zakázaný. Som zvedavý čo na to O2 povie. Cez kontaktný formulár som im o tom napísal, tak som zvedavý čo spravia.
0 0 Miloš 20.6.2012 19:47:06
A aby som bol presnejší:

Implementácia LIKE pred spustením aplikácie. Skúste si to, bez LIKE aplikáciu neotvoríte:
http://www.facebook.com/O2Slovakia?sk=app_405355312827246&ref=nf

A odkaz na pravidlá, ktoré sú týmto porušené:
http://www.facebook.com/page_guidelines.php#promotionsguidelines

Jedná sa o pravidlo E Promotions bod iv ako som už nižšie spomínal.

Dobre je to popísané na tejto stránke:
http://blog.triad.sk/online-marketing/hrajte-na-facebooku-podla-pravidiel

A to aj potvrdzuje môj predchádzajúci komentár. Pokiaľ sa nejedná o súťaž, tak môže sa vynucovať LIKE. Ak je to súťaž, LIKE na vstup je zakázané.
0 0 Miloš 20.6.2012 19:30:16
František „SNiPI“ Čaník: Akože nie je možnosť prinútiť používateľa, aby dal Like ešte pred autorizačným dialógom? Pozri si aplikáciu Najlepší šéf, tam je to implementované. Robí sa to tak, že aplikácia si zistí vlastné lajky a porovná tabuľku s ID používateľa. Teda ak sa nemýlim.

A čo sa týka poručovania pravidiel Facebooku nútením klepnutia na LIKE pred spustením aplikácie, tak jedná sa o pravidlo E bod iv pravidiel pre súťaže. Samozrejme, ak by používateľ vedel dokázať, že aplikácia nie je súťaž, tak vtedy by pravidlá neporušoval. Lenže ktorá aplikácia Facebooku nie je súťaž? Neviem presne ako je súžať v pravidlách Facebooku definovaná, ale súťaž je to minimálne vtedy, ak je možnosť využívaním aplikácie niečo vyhrať.
0 0 František Čaník 11.6.2012 18:59:45
No, volny preklad je, ze na Page OTHER THAN YOUR OWN SITE... co znamena, ze pokial ide o tvoju vlastnu, tak ok, ak by si mal ale zaroven pozadovat dalsie ine, tak uz porusujes. Takze v tomto pripade je to ok.
0 0 Zoltán Mitlík 10.6.2012 22:24:44
Rozumiem uz co myslis :) Takze ok, ale co potom s tym bodom co som postol? You must not incentivize users to Like any Page other than your own site or application

linku ti poslem do mailu :)
0 0 František Čaník 10.6.2012 22:20:18
Zoltan, posli mi link na tu appku, pretoze to by som fakt chcel vidiet, ako si cez autorizacny dialog dokazal donutit aj to, ze stranka chce Paci sa mi to!

jedine PACI SA MI TO, co stranka dokaze ziskavat je zoznam veci, ktore uzivatel oznacil ako "Paci sa mi" a to je hold trosku rozdiel... To neznamena, ze aplikacia vyzaduje, aby uzivatel klikol na Paci sa mi to, ale ze bude pristupovat k zoznamu tych veci, ktore uzivatel takto oznacil. :)

Pisem ako magor, ale snad si pochopil.
0 0 Zoltán Mitlík 10.6.2012 22:04:12
Nasiel som toto: You must not incentivize users to Like any Page other than your own site or application, and any incentive you provide must be available to new and existing users who Like your Page

Ako tak kukam, tak ten lajk ide na moju resp. klientovu fanpage, cize vlastnu....hmm ako vravim jedno pravidlo vylucuje to druhe. Ale stale mi nejde do hlavy ako moze autorizacny popup ti vypisat, ze aplikacia zisakava Vaše "Pači sa mi to" ked by to bolo proti pravidlam....
0 0 Zoltán Mitlík 10.6.2012 21:46:30
Toto nie je cez autorizacny dialog. Je to klasicky like button, ktory vies dat aj na svoju webu. Nachadza sa uz priamo v aplikacii. Ked sa ti spusti. Krom toho pytal som sa tu na to este pred tym ako sme to vobec zapracovali a nevravel si ze to je proti pravidlam. Bavil som sa o tom aj so znanym z vacsej slovensko americkej firmy a tiez vravel ze to nie je proti pravidlam. Ja som osobne tiez nenasiel ze by to bolo. Tak teraz neviem...Nevravim ze sa mylite vy, ale aj samotny facebook ma v autorizacnom popupe pri povolovani appky, ze co vsetko od teba appka ziskava. Tak neviem naco by bolo moznost zvolit si aj "Paci sa mi to" ked je to proti pravidlam. Podla toho usudzujem ze aplikacia moze vyzadovat "Paci sa mi to" je moznost zadat ju do autorizacneho popupu. Funguje to rovnako ako pri tabe. Nie si fanusik tak v tabe sa ti zobrazi aby si lajkol page a potom uvidis obsah tabu. Tu sa ti spusti appka a kde ked nie si fanusik FB page tak musis lajk...

Konkretne som sa na toto pytal a bolo by povedane ze aj ten lajk suvisi s tou appkou alebo fanpageom tej appky, nie je to proti pravidlam...

Tak teraz vazne neviem. Aj tie pravidla su tam hlupo pisane, ze jedno vylucuje to druhe...hmmm
0 0 František Čaník 10.6.2012 12:42:49
Zoltán: pri spusteni APPKY cez autorizacny dialog, NIE JE ziadna moznost, nutit uzivatela k LIKE stranky ci appky.
0 0 Zoltán Mitlík 10.6.2012 09:39:24
No nie som si isty. Konzultoval som to aj s jednou velkou zahranicnou agenturou a potvrdila mi ze to nie je proti pravidlam. Okrem toho na zaciatku spustenia aplikacie v povolovacom kroku je podmienka ze aplikacia zbiera udaje ako mail, meno a vyzaduje "Vaše páči sa mi to"...cize je to aj pred samotnym spustenim...
0 0 Miloš 29.5.2012 23:19:57
To bolo pre Zoltána.
0 0 Miloš 29.5.2012 23:19:14
Síce starý článok, ale na spustenie aplikácie sa nesmie vyžadovať Like. Píše sa to v podmienkach Facebooku. Nie je tam stanovené, že o aký Like sa jedná, čiže ani cudzí ani vlastný. Pekný príklad porušovania pravidiel je aplikácia O2 Buď najlepší šéf.
0 0 Zoltán Mitlík 28.5.2012 14:10:26
Hej hej...My sme potrebavali aby na vlastnej URL ten appky. priklad http://apps.facebook.com/volaceo, aby pred spustenim appky musel clovek lajknut urcituje facebook page, tej spolocnosti a potom sa mu spustila appka. Pri tabe no problem, ale neviem preco sme boli presvedceni, ze pri url appky to nepojde...Ide takze v pohode :)
0 0 František Čaník 23.5.2012 23:11:40
:) ide to, aj keď trošku škrabaním sa okolo hlavy, ale ide... teda ak sa bavime o uplne inom LIKE ako o tom pre konkretnu appku.
0 0 Zoltán Mitlík 23.5.2012 18:43:13
Taaak uz som sa dopatral :D Takze to ide nakoniec...My bad..Tak uz nic :))
0 0 Zoltán Mitlík 23.5.2012 15:57:20
Mna by zaujimalo ci mozem dat podmienku aj pri aplikaciach na vlastnej adrese. Cize mam appku na http://apps.facebook.com/volaco a aby sa spustila appka musi lajknut urcitu fanpage. Podla mojich info to nie je mozne ale jeden klient pri kazdej appke to od nas vyzaduje dokola a proste chcem sa uistit a raz a navzdy mu vysvetlit ze sa to neda :)

Diky
Zajtra.sk > Programovanie > FBML/Facebook > Facebook: Obsah len pre fanúšikov?


Kritika

Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!

Reklama

Seriály zo Zajtra.sk

Reklama