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.

facebook-developers

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.

facebook-developers-ustawienia

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).

Print Friendly, PDF & Email