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:
- Signed Request a práca s dekódovaním
- PAGE TAB a ako správne pridať page tab do stránok
- SNiPI.sk a pár info o autorovi tohto článku :)
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.
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:
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žú.
Ž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.
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).
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é.
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ť.
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.
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 :)
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.
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....
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
Zoltán: pri spusteni APPKY cez autorizacny dialog, NIE JE ziadna moznost, nutit uzivatela k LIKE stranky ci appky.
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...
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 :)
:) 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.
Taaak uz som sa dopatral :D Takze to ide nakoniec...My bad..Tak uz nic :))
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
Novinky
1 dňom
Hollywoodu se nelíbí dokument o TPB, snaží se jej odstranit
V únoru se k volném zhlédnutí a šíření objevil dokumentární film The Pirate Bay: AFK, který už stačil obejít monitory milionů uživatelů po celém světě. Jeho obsah a celkové vyznění se však nelíbí mnoha produkčním společnostem Hollywoodu...
1 dňom
Microsoft aktualizoval YouTube aplikaci pro Windows Phone na základě požadavků Google
Microsoft aktualizoval YouTube aplikaci pro Windows Phone, která v minulosti čelila kritice Googlu; ten dokonce požadoval její odstranění z Windows Phone Store.
1 dňom
Špionáž medzi štátmi: India pravdepodobne kradla dáta Pakistanu
Internetom sa šírili podvodné súbory, ktorých pravdepodobným cieľom bolo preniknúť do počítačov inštitúcií a občanov Pakistanu. Motívom útoku bolo odcudzenie citlivých informácií. Na prípad upozornila spoločnosť Eset.
2 dňami
Kim Dotcom: Vynašiel som dvojfaktorovú autentifikáciu, Google a Facebook porušujú môj patent
Kim Dotcom, zakladateľ Spojenými štátmi rozloženej služby pre zdieľanie súborov Megaupload, dnes prekvapil vyhlásením, že vynašiel dvojfaktorovú autentifikáciu a mnohé spoločnosti vrátane Google, Facebooku a Twitteru porušujú jeho patent.
2 dňami
Internet Explorer 10 chráni pred vírusmi viac ako konkurencia
Používatelia najnovšieho Internet Explorera sú pred škodlivými súbormi chránení viac ako priaznivci konkurenčných internetových prehliadačov...
Staršie novinky »TOP dlhšie
- 01 3 praktické CSS postupy, o ktorých ste možno nevedeli... (4811x)
- 02 3 jednoduché kroky ako spraviť responzibilný dizajn webu (4111x)
- 03 Fenomén doby: Dosť bolo transparentných ikoniek! (3921x)
- 04 PayPerPost.sk - zarábajte s webom na článkoch (3672x)
- 05 Prečo sa chcem naučiť programovať web stránky? (3595x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- 01 Poctivým zľavovým serverom sa naďalej darí (1043x)
- 02 Mobil Rulezz: Najlepšia brandovaná aplikácia z agentúry SCR (1019x)
- 03 HTML WebSocket - chat v node.js za 5 minút (927x)
- 04 Nová affiliate reklamná sieť z dielne VISIBILITY (783x)
- 05 Magazín Womanman už aj v Apple aplikácii (152x)
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 19.HTML WebSocket - chat v node.js za 5 minút
máj - 14.Poctivým zľavovým serverom sa naďalej darí
máj - 9.Nová affiliate reklamná sieť z dielne VISIBILITY
máj - 26.Mobil Rulezz: Najlepšia brandovaná aplikácia z agentúry SCR
apr - 26.Magazín Womanman už aj v Apple aplikácii
apr - Viac »
- Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Posledné komentáre
- @- ani ty mna nechapes. od zaciatku sa to nejak povazovalo za komunitny web. pomahali sm...
- dik obom za info. presne o to mi ide, snazim sa zistit ci na blogu mozem pouzit foto ...
- no podla tvojej otazky... podla mna fotkan ako mercne ucely je pouzitelna aj pre a) aj p...
- Diky za článok :). +1 PS: ak niekto má nejaký dobrý článok o (WS) tomto nech dá vedieť ...
- hi ja pod fotkou na komercne ucely rozumiem to ze sa dane fotky idu nahodit na web kt...
Kritika
Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!
Reklama
Slovenská IT komunita
Seriály zo Zajtra.sk
· Ako písať blog
· Ako sa stať PHP ninja s Yii Frameworkom
· Aplikácie pre Facebook
· CSS triky
· iOS vývojára príhody a skúsenosti
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Slovenskí iOS developeri
· Yablkov TurboTip [HD]



















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.. :)