Facebook api - aplikacja jako zakładka
Na pewno widziałeś na facebooku wiele aplikacji udostępnionych na tzw. tabach na fanpagu. Pokażę jak stworzyć taką aplikację. Na początku zaloguj się do facebooka i przejdź do działu Facebook Developers, następnie przejdź w menu na Apps. Kliknij przycisk "Create New App". Podaj dane dotyczące aplikacji - jej nazwę, przestrzeń nazw (opcjonalnie) oraz kategorię. Następnie uzupełnij podstawowe dane. Wyłącz tzw. tryb piaskownicy. Jako sposób integracji z facebookiem wybierz "Zakładka strony". Podaj nazwę taba oraz urle. Koniecznie musisz podać url https. Można również podać obraz karty. Zaznacz preferowany rozmiar zakładki.
Po kliknięciu użytkownika na naszą zakładkę w nawigacji, facebook ładuje stronę poprzez iframe, który osadza treści na stronie Facebooka. Podczas gdy Facebook ładuje stronę wysyła trochę informacji o Twojej stronie do Twojej aplikacji. Informacje te zawarte są w zakodowanej zmiennej signed_request. Zdekodujemy zmienną przy użyciu Facebook php sdk. Pobierz sdk i umieść je na serwerze. W pliku na serwerze np. index.php napisz poniższy kod.
require 'src/facebook.php';//scieżka do pliku facebook.php z sdk $facebook = new Facebook(array( 'appId' => 'TWOJ APP ID', 'secret' => 'TWOJ APP SECRET', ));//inicjalizacja obiektu Facebook $signed_request = $facebook->getSignedRequest();//dekodowanie signed_requestMamy teraz dostęp do danych. Są to np. identyfikator strony (fanpaga) czy informacja czy użytkownik, który wszedł na zakładkę lubi daną stronę.
$page_id = $signed_request["page"]["id"]; $page_admin = $signed_request["page"]["admin"]; $like_status = $signed_request["page"]["liked"]; $country = $signed_request["user"]["country"]; $locale = $signed_request["user"]["locale"];Facebook nie przekazuje żadnych informacji osobistych na temat zalogowanego użytkownika do aplikacji w tabie, chyba że specjalnie upoważni on aplikację. Użytkownik musi wejść na adres $loginUrl oraz zaakeptować uprawnienia o jakie prosi aplikacja.
//Pobierz User ID $user = $facebook->getUser(); if($signed_request["page"]["liked"]) {//sprawdzamy czy user lubi nasz fanpage echo '<strong>Lubisz nas hurra :)</strong><br><br>'; if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(array( 'scope' => 'email, publish_actions, publish_stream, user_likes',//uprawnienia, o które prosimy usera 'redirect_uri' => 'https://www.facebook.com/pages/twojfanpage/225833877538449?id=225833877538449&sk=app_1398228133748513'//adres, na który przekierowujemy po zalogowaniu (np. adres taba) )); } } else { echo '<strong>Nie lubisz nas :(</strong>'; }Jeśli użytkownik się uwierzytelni będziemy mieli dostęp do różnych informacji z Graph API (oczywiście w ramach uprawnień).
<?php if ($user) {//user się uwierzytelnił, można pobrać ciekawsze dane :) try { $user_profile = $facebook->api('/me'); $likes = $facebook->api('/me/likes'); if($signed_request["page"]["liked"]) { print_r($user_profile); print_r($likes); } } catch (FacebookApiException $e) { error_log($e); $user = null; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Facebook tab app</title> </head> <body> <p> <?php if($user) : ?> <a href="<?php echo $logoutUrl;?>">Logout</a> <?php else: ?> <?php if($signed_request["page"]["liked"]): ?> <a href="#" onclick='window.top.location.href = "<?php echo $loginUrl;?>"'>Login</a> <?php endif; ?> <?php endif; ?> </p> </body> </html>Ja zrobiłam wszystkie działania w aplikacji taba (zakładki). Stosuje się również technikę, że po sprawdzeniu czy użytkownik polubił naszą stronę i jeśli tak przekierowujemy go na stronę innej aplikacji na facebooku. Zwykle w ten sposób działają różne facebookowe konkursy.