Článek v rubrikách:

»PHP
»Javascript
»Facebook

Jak mi facebook vzal 4 dny života

Zkoušeli jste už implementovat facebook login? Facebook registraci a facebook registratoin plugin? Na posledním projektu to trvalo 4 dny!


Facebook má pro přihlášení několik sdk. Pracovat pravděpodobně budete s php-sdk a javascript-sdk. Vše načtete v manuálu, je to celkem snadné developers.facebook.com/docs/plugins/registration/ není to ani nejhůře popsané, ale vtip tkví v tom, že k současnému datu javascript-sdk a php-sdk nespolupracuje!

Používám u obojího nejnovější verze dokonce i najdete zmínku o tom, že od 21 května za 4 týdny bude vše fungovat developers.facebook.com/blog/post/503. Ale dnes je 3. prosince a problém stále nevyřešen. V dokumentaci žádná zmínka o problému a tak trvá dlouhou dobu než vůbec zjistíte o co jde.

Javascript SDK si totiž COOKIE ukládá podle svého a PHP-SDK také podle svého, no není divu, že se nemůžou dohodnout a tak v javascriptu se v app tváří, že uživatel je přihlášen, že je vše ok, ale php vám stále tvrdí, že uživatele nezná.

Vyřešil jsem to tímto hackem.

  • $facebook = new Facebook(array(
  • 'appId' => FB_APP_ID,
  • 'secret' => FB_SECRET,
  • ));
  •  
  • if (isset($_COOKIE['fbs_' . $facebook->getAppId()])) {
  • $cookie = preg_replace("/^"|"$/i", "", $_COOKIE['fbs_' . $facebook->getAppId()]);
  • parse_str($cookie, $data);
  •  
  • if (isset($data['access_token'])) {
  • $facebook->setAccessToken($data['access_token']);
  • }
  • }