Çarşamba, 17 Haziran 2009

Facebook Uygulaması Geliştirmek

 

Gün geçtikçe büyüyen yeni mecra Facebook, yazılım geliştiricilere açtığı APIì ile bizlerin de kendi platformuna uygulama yazmamıza izin vermektedir. Facebook kullanıcıları bir çok uygulamayı bir arada kullanabildikleri gibi kendileri de uygulama yazabilmektedirler. Bu yazımda Facebook ile CodeIgniter arasında bağlantının nasıl olacağını göstereceğim.

Bu yazıdan yararlanacak kişilerin Facebook`a üye olması ve nasıl kendilerine özel API ve secret_key bilgilerini almaları bu yazının konusu dışında olduğu için bildiğiniz varsayılacak ve anlatılmayacaktır.

Öncelikle application/config dizini altına facebook.php isimli bir dosya açıyoruz ve bu konfigürasyon dosyamızın içine aşağıdaki kod satırında verilen yerelere kendimize ait değerleri girerek kayıt ediyoruz.

<?php

    $config['facebook_api_key'] = 'size_ait_api_key';
    $config['facebook_secret_key'] = 'size_ait_secret_key';

İkinci adımda Facebook client library denilen ve uygulama geliştirme merkezinden indirilen bu kütüphaneyi indiriyoruz. Tüm dosyaları application/plugins isimli dizinin altına (bu dizin yoksa yaratılmalıdır) kopyalıyor ve facebook.php dosyasının adını facebook_pi.php olarak değiştiriyoruz. Böylece dışarıdan gelen bu kodları plugin uygulaması olarak kullanmak üzere hazırlamış olduk.

Sonraki adımda application/library dizini altına giderek buraya MY_Controller.php dosyamızı yaratıyoruz. Bu dosya CodeIgniter Controller dosyasının genişletilmiş halidir ve bundan sonraki tüm Controller dosyalarımızda kullanacağımız Controller dosyamızı üretir. Aşağıdaki kodları MY_Controller.php içine kayıt ediyoruz.

<?php if (!defined('BASEPATH')) exit('No direct access allowed.');

class Facebook_Controller extends Controller {
    public $facebook;

    function Facebook_Controller() 
    {
        parent::Controller();
        
        $this->load->config('facebook');
            
        $this->__fbApiKey    = $this->config->item('facebook_api_key');
        $this->__fbSecret    = $this->config->item('facebook_secret_key');
        
        $this->load->plugin('facebook');
          // Prevent the 'Undefined index: facebook_config' notice from being thrown.
        $GLOBALS['facebook_config']['debug'] = NULL;
          // Create a Facebook client API object.
        $this->facebook = new Facebook($this->__fbApiKey, $this->__fbSecret);
        $user = $this->facebook->require_login();
    }

}

Sira Controller dosyamızın ayarlarına geldi. Burada application/controllers dizini altında varsayılan Controller dosyamız olan Welcome.php dosyamızın içine aşağıdaki kdoları yazıyoruz:



class Welcome extends Facebook_Controller {

    function Welcome ()
    {
        parent::Facebook_Controller();    
    }

    function index()
    {
       // Retrieve the user's friends and pass them to the view.
       $data['friends'] = $this->facebook->api_client->friends_get();
       $this->load->view('welcome_message' ,$data);
    }

}

Yukarıdaki kodlarda dikkat edilecek husus, Welcome sınıfının Controller yerine MY_Controller sınıfı içinde tanımladığımız Facebook_Controller sınıfının genişletilmesinden oluşmasıdır. Burada Facebook API`da anlatıldığı gibi kullanıcı listesi çekilip, uye sorgulaması yapılmakta ve elde edilen sonuçlar View dosyasına aktarılmaktadır.

View dosyamız application/views dizini altındaki varsayılan Views dosyası olan welcome_view.php dosyasıdır:

<style type="text/css">
.img {
  float: left;
  padding : 10px 0px 0px 10px;
  width:50px;
  overflow: visible;
}

.name {
  padding-top: 0px;
  text-align: center;
}

.container
{
  padding-left:18px;
}
</style>


<div class="container">
<?php
foreach ($friends as $id)
{
?>
<div class='img'>
    <fb:profile-pic uid='<?=$id?>' firstnameonly = 'true' linked='true' size='square'/>
<div class='name'>
        <fb:name uid='<?=$id?>' firstnameonly = 'true' capitalize='true'  useyou = 'false'/>
    </fb></div>
</fb></div>
<?php
}
?>
</div>

Facebook uygulamasını url adresi application/config dizini altındaki config.php dosyasında bulunan base_url değişkenine tanımlanmalıdır: $config['base_url'] = "http://apps.facebook.com/uygulamanin_adi/";

Benim de tercih ettiğim yöntem olan bu bağlantı yolunu, hem CodeIgniter`ın değişik yönlerini anlatarak pratik yapmak hem de Facebook için uygulama geliştireceklere bir yol göstermek amacı ile anlattım. Umarım işinize yarar.

Yorumlar

Bir şey çok merak ediyorum. Teknoloji bu kadar ilerlemiş siz buu kadar kodu derlemişken anlatmak istediğnizi bir örnekle dosyasıyla göndermek çokmu zor... gazete alsalar daha iyi :))

@gereksiz: Bu yazıda bahsedilen kütüphaneler üçüncü kişilere ait olduğu için benim ekleyeceğim örnek dosyasına dahil olamayacaklardır. Çünkü hakları başkalarına aittir.

Dikkat ederseniz, sitede verilen örnek uygulama paketlerinin içine CodeIgniter`da dahil değildir. Bu nedenle örnek dosya vermektense, her adımı detaylı anlatmaya özen gösterdim.

Anlamadığınız ya da takip etmekte zorlandığınız bir nokta varsa sormaktan çekinmeyiniz.

Dostum tamam bunlarda problem yok. Önemli olan Facebook taki developers ı kullanarak hangi işlemleri yapıyoruz ordaki panelde nerelere ne ekliyoruz. Bide Facebook tarafını anlatırsan sevinicem çok.. Güzel anlatım olmuş teşekkürler..

@Gerekli: İşin Facebook kısmı bu blogun konuları kapsamına girmiyor ne yazık ki. Burada sadece Facebook uygulamalarının CodeIgniter ile etkileşimini görebilmek üzere bu yazıyı hazırladım.

Facebook uygulamalarını öğrenmek için en iyi yol, sitede yayımlanan resmi dokümantasyondur. İlginize teşekkür ederim.

bende php ile faceconnect uygulamamı yeni bitirdim. Code ile vermeniz çok süper olmuş . Burdan inceleyebilirsiniz faceconnect . Ayrıca kodlarımı düzenledikten sonra yakında  bir facebook connect ile ilgili detaylı bir kaynak paylaşmayı düşünüyorum..

http://developers.facebook.com/tools.php

burada facebook bize kullanabileceğimiz tüm fonksiyonları sunuyor zaten. Fazla ingilizceye dahi gerek yok deneyip görebilirsiniz fonksiyonların işlevlerini. :)

 Facebook client library ınmıyor rıca etsem nerden bulabılcemı soylermısınız ?

Fatıh bey bu eklentı artık calısmıyor ne denedım se yapamadım. Cı nın yenı surumunden mı kaynaklanıyor yok sa facebook un yapısı degıstı ondan mı kaynaklanıyor anlamadım. Yardımcı olursanız sevınırm

@Onur Tez: Konu yazı 2009 tarihlidir. Facebook bu tarihten bugüne kadar köklü değişiklikler yapmış olduğundan yazı güncelliğini yitirmiş olabilir. Elliot Haughin tarafından yazılmış bu yazıyı okumanızı öneririm: 


@Onur Tez: Facebook kitabı çıkmış belki işine yarar. http://www.dikeyeksen.com/programlama/facebook-programlama-uygulama-gelistirme.html

Yorum Ekle