Daha önce fırsat bulduğum bir anda yazdığım örnek kodları Facebook Uygulama Geliştirme: İzin Alma ve Duvara Yazma başlığı altında paylaşmıştım. Fakat ayrıntılı açıklamaya vaktim olmadığı için sadece kodlar üzerinde gösterip yayınlamıştım. Fırsat bulmuşken bu yazıda, aynı kodları daha ayrıntılı bir şekilde anlatmak istedim.
Facebook Php Sdk'sını indirdiğinizi ve şu yazıya göre facebook üzerinden uygulamanızı oluşturduğunuzu varsayıyorum.
Facebook, yaptığınız sayfaları gelişmiş bir iframe mantığı ile kendi sayfası üzerinden gösteriyor. Bu demektir ki yaptığınız uygulama hem kendi sunucunuz üzerinde hemde facebook sayfası üzerinde çalışacaktır. Yaptığım örnek uygulama hem kendi sunucusundan (burada) hemde facebook üzerinden (burada) çalışacaktır. Tavsiyem öncelikli olarak kendi sunucunuzda test etmeniz. Böylelikle sorunlara daha çabuk müdahale edebilirsiniz.
Uygulama Sınıfı Oluşturma
Facebook.php dosyasını çağırıp gerekli tanımlamaları yapıyoruz. Ardından yeni bir facebook sınıfı tanımlayıp uygulamamızın çekirdeğini oluşturuyoruz.
include_once "../facebook/facebook.php";
$fbconfig['appid' ] = ""; //api id
$fbconfig['secret'] = ""; //api secret
$fbconfig['baseurl'] = "http://apps.facebook.com/fbpostwall/index2.php"; //uygulama yolu
//uygulamayı tanımlıyoruz
$facebook = new Facebook(array(
'appId' => $fbconfig['appid'],
'secret' => $fbconfig['secret'],
'cookie' => true,
));
$fbconfig['baseurl'] değişkeni, uygulamanın herhangi bir işlem yaptıktan sonra hangi url'ye yönleneceğini belirtiyor. Örneğin üye giriş yaptıktan sonra tekrar bu adrese dönecektir.
Kullanıcı Girişini ve İzinleri Kontrol Etme
$facebook->getUser() ile açık olan oturumu kontrol ediyoruz. Eğer oturum açıksa true değeri dönecek, açık değilse false dönecektir. Eğer oturum açık değilse, facebook sınıfını kullanarak bir giriş urlsi oluşturup kullanıcıyı o adrese yönlendiriyoruz.
//kullanıcının oturumunu sorguluyoruz. Oturum varsa true, yoksa false dönecektir.
$user = $facebook->getUser();
//kullanıcıya giriş bağlantısı yolluyoruz
$loginUrl = $facebook->getLoginUrl(
array(
'scope' => 'email,offline_access,publish_stream', // scope değeri istediğimiz izinler
'redirect_uri' => $fbconfig['baseurl']
)
);
$logoutUrl = $facebook->getLogoutUrl();
Adresi oluştururken kullanıcıdan hangi izinleri istediğimizi ve giriş yapıldıktan sonra hangi adrese dönüleceğini belirtiyoruz. İzinleri daha sonra ayrıntılı şekilde anlatacağım. Burda email adresine(email), oturum açık olmadan bilgilere erişme(offline_access) ve duvarına yazma(publish_stream) izinlerini istedik. $logoutUrl ise çıkış bağlantısı.
Kullanıcı Bilgileri Okuma
$facebook->api("/me") ile kullanıcının izin verdiği bilgilerinin tamamını array olarak alıyoruz. Ben array'dan kullanıcının adını(first_name) yazdırdım ve arrayı aynen ekrana bastırdım.
//kullanıcı bilgilerini alıyoruz
$userInfo = $facebook->api("/me");
echo "Hoşgeldiniz,".$userInfo["first_name"].". <br />Çıkış yapmak için <a href='$logoutUrl'>tıklayınız</a><br />";
echo "Okunan Bilgileriniz:<br />";
echo '<pre>';
print_r($userInfo);
echo '</pre><br />';
Kullanıcının Duvarına Yazma
Bir önceki yazıdan farklı olarak kullanıcının duvarına bir eklenti(bağlantı,resim vb) yazdıracağım.
Sayfa her yenilendiğinde post edilmesin diye bir bağlantı ile aynı sayfaya get ile bir değer yollayıp o değer ile güncellemeyi gerçekleştiriyorum. $facebook->api("/me/feed", 'post', '') kalıbı kullanıcının kendi duvarına yazı göndermemizi sağlıyor.
Gönderilecek eki array olarak gönderiyoruz.
echo "<a href='".$fbconfig['baseurl']."?tt=1'>Durumunuzu güncellemek için tıklayın</a>";
if(isset($_GET['tt'])){
//kullanıcının duvarına yazdırıyoruz.
try {
$statusUpdate = $facebook->api("/me/feed", 'post', array(
'message' => "sezercik.net demo uygulaması",
'link' => 'http://sezercik.net',
'picture' => 'http://www.sezercik.net/template/default/img/logo2.png',
'name' => 'Sezercik.net',
'description'=> 'sezercik.net demo uygulaması ile post edilmiştir.'
));
} catch (FacebookApiException $e) {
d($e);
}
if (isset($statusUpdate)) {
echo "<br />Durum ".$statusUpdate['id']." idsi ile güncellendi.";
}
}
Uygulama demosu için tıklayın.
Güncellenmiş çalışma dosyası çin tıklayın.
Mesela bir video uygulaması yaptınız, kullanıcı videoyu izlediği anda yukardaki tekniği uygulayarak kullanıcının videoyu kendi duvarında paylaşmasını sağlayabilir ve uygulamanızın reklamını yapmış olmasını sağlayabilirsiniz. Şimdilik sadece php ile yazıyorum. FBJS ile daha dinamik uygulamalar oluşturmak mümkün.
Aynı konuyu daha ayrıntılı anlatmaya çalıştım. Sürç-ü lisan ettiysem affola.
More…