Symfony2 und die Facebook php sdk 4

16. März 2015

Um in Symfony2 mit der neuen Facebook PHP SDK zu arbeiten, muss man zunächst die library über den composer hinzufügen. Man fügt also im composer.json unter require eine Zeile hinzu:

  1. "facebook/php-sdk-v4" : "4.0.*",

und dann den composer updaten lassen (“php composer.phar update”). Wenn alles geklappt hat, kann man nun in seinem Controller wenn benötigt oben die Facebook Klassen via “use” hinzufügen:

  1. use Facebook\FacebookSession;
  2. use Facebook\FacebookRedirectLoginHelper;
  3. use Facebook\FacebookRequest;
  4. use Facebook\FacebookResponse;
  5. use Facebook\FacebookSDKException;
  6. use Facebook\FacebookRequestException;
  7. use Facebook\FacebookAuthorizationException;
  8. use Facebook\GraphObject;

Und dann lassen sich die Klassen ohne Pfad einfach ansprechen, beispielsweise

  1. FacebookSession::setDefaultApplication($id, $secret);

Was ich dann festgestellt habe, ist dass Symfony mit dem Session Handling von Facebook so nicht klarkommt, irgendwann wirft es dann eine Exception:

  1. FacebookSDKException: Session not active, could not store state.

Dies lässt sich aber sehr einfach beheben, denn in Symfony2 ist die Session sowieso immer aktiv, ein Prüfen des Session Status braucht es nicht:

  1. $helper = new FacebookRedirectLoginHelper( $this->generateUrl( 'facebooklogin', array(), true ) );
  2. $helper->disableSessionStatusCheck();

Danke vielmals an den Stackoverflow Beitrag von SammyK, der die 3 optionen sehr gut beschreibt.