Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem
WebHelp.pl Warsztat Artykuły Facebook: automatyczne dodawanie wpisów na stronie

Warsztat / Artykuły i tutoriale

Facebook: automatyczne dodawanie wpisów na stronie

Bartosz Romanowski 8 stycznia 2011 komentarze ()

Strona w serwisie Facebook to bardzo popularny sposób na utrzymywanie kontaktu z użytkownikami, pod warunkiem że jest regularnie aktualizowana. Aby ułatwić sobie to zadanie warto stworzyć system automatycznego umieszczania wpisów informujących o nowościach na naszej stronie.

W Sieci można znaleźć mnóstwo tekstów opisujących proces umieszczania wpisów na stronie, jednak znaczna większość z nich korzysta ze starszego (i powoli wycofywanego) REST API. Trafić można również na takie cuda, które wymagają podania loginu i hasła do naszego konta w serwisie Facebook, co oczywiście nie jest konieczne, a wręcz jest niezalecane. W tym tekście postaram się możliwie jasno zaprezentować jedną z metod automatycznego umieszczania wpisów na stronie, w której skorzystamy z dobrodziejstw oferowanych nam przez Graph API. Nie jest to jedyny sposób rozwiązania tego problemu, ale moim zdaniem jest najprostszy od strony technicznej.

Aby w pełni zrozumieć niniejszy tekst wymagana jest podstawowa wiedza na temat programowania w PHP. Do stworzenia skryptu publikującego potrzebne nam będzie udostępniane przez Facebooka PHP SDK, które można ściągnąć tutaj. W pobranym archiwum w katalogu 'src' znajduje się plik facebook.php, który należy skopiować do katalogu zawierającego naszą stronę (w dalszej części tekstu założymy, że znajduje się on w katalogu 'fb').

Rejestracja aplikacji

Aby móc automatycznie publikować wpisy na stronie trzeba zarejestrować własną aplikację w serwisie Facebook - będziemy bowiem potrzebować jej unikalnego identyfikatora (Application ID) oraz sekretnego kodu (Application Secret), służącego do autoryzacji. Szczegółowe informacje na temat procesu rejestracji aplikacji można znaleźć w artykule Facebook - tworzenie aplikacji: pierwsza aplikacja.

Do rejestracji aplikacji służy specjalna strona. Po wpisaniu nazwy dla naszej aplikacji zostaniemy przeniesieni do edycji ustawień, na której interesuje nas praktycznie tylko zakładka "Strona aplikacji".

Facebook - ustawienia aplikacji

W polu "Adres (URL) strony" należy wpisać adres naszej strony (wraz z http://). Pole "Domena strony" można zostawić puste. Zmiany oczywiście zatwierdzamy przyciskiem "Zapisz zmiany".

Zezwolenia

Zajmijmy się teraz uzyskaniem dla naszej aplikacji zezwoleń koniecznych do automatycznej publikacji wpisów. Ponieważ chcemy, aby nasz skrypt publikował wpisy jako administrator strony, potrzebujemy następujących uprawnień: publish_stream - pozwala na publikowanie wpisów manage_pages - pozwala aplikacji na uzyskiwanie tokenów (access_token) dla stron administrowanych przez użytkownika; będzie nam to potrzebne do uzyskania dostępu do strony bez konieczności logowania się do konta użytkownika offline_access - pozwala aplikacji na wykonywanie operacji w imieniu użytkownika bez konieczności jego logowania do Facebooka; w praktyce oznacza to, ze tokeny (access_token) otrzymane przez aplikację nigdy nie wygasają.

Szczegółowy opis mechanizmu zezwoleń w serwisie Facebook znaleźć można w artykule Facebook - tworzenie aplikacji: zezwolenia i korzystanie z API.

Gdy już nadamy aplikacji odpowiednie zezwolenia, potrzebny nam będzie access_token dla odpowiedniej strony. Listę stron administrowanych przez użytkownika (w tym przypadku przez nas) otrzymamy po wywołaniu metody 'accounts' obiektu 'user' (https://graph.facebook.com/me/accounts). Jeśli wywołująca tą metodę aplikacja będzie miała zezwolenie 'manage_pages', zwrócona lista będzie zawierała również interesujące nas tokeny.

Aby nieco zautomatyzować sobie proces nadawania uprawnień i uzyskiwania tokenów, napiszemy sobie krótki skrypt, który nazwiemy fb_config.php, umieścimy na serwerze w domenie podanej w konfiguracji aplikacji, a następnie otworzymy go w przeglądarce wpisując adres http://nasz-serwer.pl/fb_config.php:

Kod: Zaznacz cały
require('fb/facebook.php');

$facebook = new Facebook(array(
  'appId'  => 'tu_wpisz_ID_aplikacji',
  'secret' => 'tu_wpisz_sekretny_kod',
  'cookie' => true,
));

$session = $facebook->getSession();

$me = null;
if ($session) {
  try {
    // pobieramy informacje o użytkowniku
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

// pobieranie listy stron administrowanych przez użytkownika
if($me)
{
  $accounts = $facebook->api('/me/accounts');
  foreach($accounts['data'] as $account)
	echo($account['id']." - ".$account['name']." - ".$account['access_token']."<br />");
?>
<a href="https://graph.facebook.com/me/accounts&access_token=<? echo($session['access_token']); ?>">Lista stron</a><br />
<?
}
?>
<a href="<? echo($facebook->getLoginUrl(array('req_perms' => 'manage_pages,publish_stream,offline_access'))); ?>">Login</a>

Szczegółowy opis tego, co robi kod do momentu pobierania listy stron, można znaleźć w artykule Facebook - tworzenie aplikacji: pierwsza aplikacja. Jeśli jesteśmy zalogowani do aplikacji i nadaliśmy jej odpowiednie zezwolenia, zostanie wywołana metoda 'accounts', po czym skrypt wyświetli informacje na temat otrzymanych od niej stron (ich identyfikatory, nazwy oraz tokeny). Na stronie zostanie również wyświetlony link do zalogowania się do aplikacji (wraz z nadaniem odpowiednich zezwoleń) oraz do wywołania metody 'accounts' bezpośrednio (zwraca wynik w formacie JSON).

Publikowanie wpisu

Jeśli wszystko poszło po naszej myśli, to mamy już identyfikator strony, na której nasz skrypt będzie publikował wpisy, oraz access_token potrzebny do wykonywania tej operacji. Najprostszy kod publikujący może wyglądać na przykład tak (zapiszmy go sobie na serwerze w pliku fb_publish.php):

Kod: Zaznacz cały
require('fb/facebook.php');
$page_access_token = '_access_token_dla_strony_;
$page_id = '_identyfikator_strony_';

$facebook = new Facebook(array(
  'appId'  => 'tu_wpisz_ID_aplikacji',
  'secret' => 'tu_wpisz_sekretny_kod',
  'cookie' => true,
));

$session = $facebook->getSession();

$params = array('message' => 'Testowy wpis',
		'access_token' => $page_access_token,
		'link' => 'http://nasza-strona.pl',
		'name' => 'Tytuł wpisu',
		'caption' => 'Opis wpisu',
		'picture' => 'http://nasz-serwer.pl/katalog/obrazek.jpg',
		'description' => 'Dłuższy opis');
                
$post = $facebook->api('/'.$page_id.'/feed', 'post', $params);

Efektem działania tego skryptu będzie mniej więcej taki wpis na stronie:

Facebook - wpis na stronie

Oczywiście w tablicy $params wartości wszystkich parametrów (poza access_token, rzecz jasna) możemy dowolnie modyfikować, możemy również podstawić tam odpowiednie zmienne, na przykład zawierające tytuł, treść i link do nowego wpisu w naszym serwisie. Niektóre pole, na przykład picture, message czy caption, możemy w ogóle pominąć jeśli nie są nam potrzebne.

Skrypt publikujący wpis możemy dołączyć do już istniejącego skryptu lub wywoływać go niezależnie, przekazując mu dane na przykład metodą POST. Ponieważ dodanie wpisu może trwać kilka, a nawet kilkanaście sekund, warto pokusić się również o zaimplementowanie mechanizmu uruchamiającego skrypt "w tle".

W razie pytań lub problemów zapraszam na nasze forum.

Inne artykuły na ten temat

Facebook - tworzenie aplikacji: pierwsza aplikacja
Facebook - tworzenie aplikacji: zezwolenia i korzystanie z API
Facebook - tworzenie aplikacji: zaproszenia
Facebook - tworzenie aplikacji: real-time updates

Masz pytania lub wątpliwości? Odwiedź nasze forum dyskusyjne.

Bartosz Romanowski

Programista, gadżeciarz, krytyczny miłośnik produktów Apple, fan ciężkich brzmień i niepoprawny pesymista.


Komentarze


HTML CSS JavaScript PHP bazy danych MySQL Flash grafika framework hosting domeny pozycjonowanie wordpress Facebook