Autopost Facebook w PHP

FacebookWall

W dobie wszechobecnych serwisów społecznościowych jesteśmy w stanie wykorzystywać ich potencjał i zwiększać tym samym ruch na naszych stronach poprzez prowadzenie Fan Page lub tworzenie dedykowanych aplikacji. Największym beneficjentem takich działań jest oczywiście Facebook. Udostępnia on API, które przykładowo pozwala zarządzać naszymi Fan Page. Publikacja informacji oraz dzielenie się nią ze swoimi „fanami” (mam tutaj na myśli oczywiście lubiących naszą stronę) może odbywać się w sposób automatyczny.

Przykładowo – tworzymy wpis na naszej stronie, który zaraz po publikacji ląduje na Fan Page naszej strony na Facebooku. Nie musimy tym samym powtarzać tej czynności ręcznie, a na pewno nie zapomnimy jej wykonać w późniejszym terminie. Tak działa to na przykład u mnie. Publikując nowy wpis na blogu, wysyłany jest on automatycznie na Fan Page na Facebooku: https://www.facebook.com/mrzepinskipl

Dodatkowo – wykorzystując tagi Open Graph umieszczone w kodzie HTML  naszej strony, jesteśmy w stanie sprawić, by publikacja ta miała zakładaną przez nas formę.

  1. Pierwszym krokiem w realizacji naszego zadania będzie utworzenie aplikacji na stronie Facebook Developers (Apps -> Utwórz aplikację). Otrzymamy w ten sposób wymagane dane (app_id oraz app_secret), które wykorzystamy dalej.
  2. Następnie wchodzimy w opcję edycji naszej aplikacji (Edit app) i na stronie, która nam się załaduje musimy uzupełnić wszystkie wymagane dane,  a w szczególności parametr Canvas URL, którym musi być URL naszej strony, która obsługiwać będzie żądania HTTP wysyłane do Facebook.
  3. Wysyłamy pierwszy request do Facebook, w którym podajemy jakie uprawnienia chcielibyśmy uzyskać:
    https://www.facebook.com/dialog/oauth?client_id={app_id}&redirect_uri={redirect_url}&
    scope=manage_pages,offline_access,publish_stream

    , gdzie jako parametry podajemy:

    • app_id = Application ID -> z ustawień aplikacji
    • redirect_url = Canvas URL -> ten sam URL, który podawaliśmy wyżej

    Jeżeli całość przebiegnie poprawnie, to Facebook zwróci nam callback pod wskazany Canvas URL i za pomocą zmiennej $_GET będziemy mogli pobrać parametr code_string, który posłuży nam do wykonania kolejnego requestu.

  4. Kolejny krok, to wysłanie następnego requestu w ramach którego otrzymamy specjalny token. Posłuży on już finalnie do wysłania publikacji na nasz Fan Page wall.
    https://graph.facebook.com/oauth/access_token?client_id={app_id}&redirect_uri={redirect_url}&
    client_secret={app_secret}&code={code_string}
    • app_id = Application ID -> z ustawień aplikacji
    • redirect_url = Canvas URL -> ten sam URL, który podawaliśmy wyżej
    • app_secret = App Secret -> z ustawień aplikacji
    • code_string -> parametr code_string otrzymany w poprzednim requestcie

    W ten właśnie sposób powinniśmy otrzymać od Facebook parametr token.

  5. Pobieramy Facebook PHP SDK.
  6. Możemy w końcu zrealizować nasze zadanie i wysłać POST na nasz Fan Page wall:
    <?php
    require_once("path/to/facebooksdk/src/facebook.php");
    
    $facebook = new Facebook(array(
      'appId' => '{app_id}', // app_id -> z ustawien aplikacji
      'secret' => '{app_secret}', // app_secret -> z ustawien aplikacji
      'cookie' => true,
    ));
    
    // $token - otrzymany w poprzednim zadaniu HTTP
    $post = array(
      'access_token' => $token,
      'message' =>'wiadomosc',
      'name' => 'imieNazwisko',
      'description'=> 'opis',
      'picture' => 'http://static.obrazek.url/',
      'link' => 'http://link.pl/',
      'caption' =>'podpis'
    );
    try {
      $res = $this->tasks->api('/me/feed','POST', $post);
    } catch (Exception $e) {
      echo $e->getMessage();
    }
    ?>

Tym samym publikacja powinna pojawić się na waszym wallu.