Integracja serwisu z Facebookiem
Ostatnio musiałem zintegrować budowany przeze mnie serwis z Facebookiem (logowanie, komentarze itp.). No i na „dzień dobry” niemiłe zaskoczenie – taki gigant jak Facebook nie ma jasnej i przejrzystej dokumentacji. Owszem są opisy metod w bibliotece i nawet przykłady aplikacji, ale opisu krok po kroku nie znalazłem…
Aktualizacja (08.02.2016): napisałem nowy wpis dostosowany do najnowszej wersji API. Zachęcam do lektury http://old.lukasz-socha.pl/php/integracja-serwisu-z-facebookiem-po-raz-kolejny/
Aktualizacja (09.09.2015): Facebook co jakiś czas wprowadza zmiany w API. W tym komentarzu Łukasz pokazuje jak pobrać adres email z aktualną wersją biblioteki.
Aktualizacja (12.05.2014): Zaktualizowałem wpis, tak by był aktualny z najnowszą wersją platformy Facebook Developers.
W polskiej sieci też niewiele informacji (jak coś już znalazłem było przestarzałe). Musiałem wesprzeć się anglojęzycznymi forami. W związku z tym postanowiłem opisać integrację serwisu z FB krok po kroku w prosty i przejrzysty sposób (tak wiem, wstęp na to nie wskazuje ;)).
No to zaczynamy
Na wstępie musimy utworzyć naszą aplikację na Facebooku. Żeby to zrobić nasze konto musi być zweryfikowane. Jak już potwierdzimy, ze my to naprawdę my ;) przechodzimy na stronę deweloperską i klikamy Create new App. Wyskoczy nam standardowe okienko, gdzie podajemy nazwę naszej aplikacji. Następnie przechodzimy do bardziej szczegółowej edycji.
Identyfikator aplikacji oraz App Secret będziemy musieli podać przy konfigurowaniu biblioteki, dane te nie powinny wpaść w niepowołane ręce – aplikacja nasza będzie gromadziła w końcu dane osobowe.
Z zakładek znajdujących się z lewej strony wybieramy Ustawienia i klikamy + Dodaj platformę. Z okienka wybieramy „Strona internetowa”. Następnie wpisujemy adres URL do naszego skryptu, w którym przeprowadzimy logowanie z Facebookiem. Istnieje możliwość logowania się z różnych podstron serwisu. W tym celu musimy podać listę domen w polu App domains.
Integrowanie z naszym serwisem
Dla potrzeb stron www Facebook udostępnia JavaScript SDK oraz PHP SDK. Ja omówię wykorzystanie PHP SDK, który można pobrać stąd. Po ściągnięciu biblioteki stwórzmy plik index.php i przeprowadźmy konfigurację:
<?php require_once 'php-sdk/src/facebook.php'; $config = array(); $config['appId'] = '412791612102295'; // tu wpisz ID twojej aplikacji $config['secret'] = '4d21a055bcfef58ad427474595d5b204'; // tu wpisz secret twojej aplikacji $fb = new Facebook($config);
Nasza strona jest już „połączona” z Facebookiem, pora teraz zalogować użytkownika:
$params = array( 'scope' => 'email', 'redirect_uri' => 'http://old.lukasz-socha.pl/facebook' ); echo '<a href="' . $fb->getLoginUrl($params) . '">Zaloguj się przez Facebook</a>';
Element scope zawiera listę uprawnień (oddzielonych przecinkiem) o jakie prosimy użytkownika. Z kolei redirect_uri informuje FB, gdzie aplikacja ma powrócić po poprawnym zalogowaniu. Możemy teraz dowolnie korzystać z danych użytkownika:
$user = $fb->api('me'); echo 'Witaj, Jesteś zalogowany jako '.$user['name'];
Metoda api(‚me’) zwraca tablicę z danymi użytkownika. Możemy teraz dowolnie je wykorzystać w naszym serwisie.
Na koniec dodajmy opcję wylogowania:
echo '<a href="' . $fb->getLogoutUrl() . '">Wyloguj się przez Facebook</a>';
Tak wygląda w pełni działający plik index.php:
<?php require_once 'php-sdk/src/facebook.php'; $config = array(); $config['appId'] = '412791612102295'; $config['secret'] = '4d21a055bcfef58ad427474595d5b204'; $fb = new Facebook($config); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /> <title>Nasz serwis</title> </head> <body> <?php if ($fb->getUser()) { // sprawdza czy zalogowany $user = $fb->api('me'); echo 'Witaj, Jesteś zalogowany jako '.$user['name'].' <a href="' . $fb->getLogoutUrl() . '">Wyloguj się przez Facebook</a>'; } else { $params = array( 'scope' => 'email', 'redirect_uri' => 'http://old.lukasz-socha.pl/facebook/' ); echo 'Brak dostępu do danych. <a href="' . $fb->getLoginUrl($params) . '">Zaloguj się przez Facebook</a>'; } ?> </body> </html>
Jak widać integracja z Facebookiem nie jest zbyt skomplikowana. Mi osobiście najwięcej problemów sprawiało stworzenie aplikacji na stronie deweloperskiej – nie ma tam informacji, że musimy podać dokładny adres do skryptu logowania (podawałem tylko ogólny domeny).