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. Tworzenie aplikacji

Teraz skopiuj ID utworzonej aplikacji z urla i przejdź na adres: https://www.facebook.com/dialog/pagetab?next=http://facebook.com&app_id=Your_Application_ID Skopiuj ID utworzonej aplikacji z urla Pojawi się okienko dodawania nowego taba do fanpaga. Wybierz stronę (fanpage), do której ma być doczepiony. Twój tab został utworzony. Zobaczysz go na głównej stronie fanpaga. Widok taba (zakładki) na fanpagu Przyjrzymy się teraz jakie dane można przechwycić na takim tabie. Oczywiście wcześniej musimy umieścić skrypt php w podanym w konfiguracji aplikacji miejscu, załączyć php sdk i można działać.
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_request
Mamy 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.