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