Facebook ile Giriş Yapmak ve Facebook Bilgilerini Getirmek - PHP SDK

(2014-11-15 20:48)

Facebook’a herhangi bir istekte bulunmak için öncelikle bir uygulamaya ihtiyacımız var. Çünkü bu uygulama’nın verdiği appId ve secret key’i ile facebook’dan ilk etapta izin almamız gerekiyor. Eğer uygulama oluşturmayı bilmiyorsanız alt kısımda galeriye göz atabilirsiniz.

Uygulama oluşturma adresi;
https://developers.facebook.com/apps

Sıra geldi PHP SDK’ya

Kullanabilmemiz için facebook’un php kütüphanesini indirmemiz gerekiyor. Bunuda github üzerinden indiriyoruz. İçerisinde bir çok dosya mevcut, bize lazım olan “src” klasörü.

PHP SDK indirme adresi;
https://github.com/facebook/facebook-php-sdk

Hadi kod yazmaya başlayalım..

İlk olarak src klasörü içinde bulunan facebook.php‘yi sayfamıza dahil edelim.

require 'src/facebook.php';

Daha sonra facebook’dan uygulamamız için izin alalım. Bunun için facebook sınıfını başlatıyoruz. Ve dizi olarak uygulama’da verilen appId ve secret key’i gönderiyoruz.

$facebook = new Facebook(array(
    'appId' => 'senin app id değerin',
    'secret' => 'senin secret key değerin'
));

Sıra geldi kullanıcının giriş yapıp yapmadığını anlamaya.. Bunun için getUser() metodunu kullanacağız. Eğer kullanıcı giriş yapmışsa üye id’sini yapmamışsa 0 değerini bize döndürüyor. Bizde buna göre kontrollerimizi yapabiliriz.

$userid = $facebook->getUser();

Eğer kullanıcı giriş yapmışsa hemen bir try – catch yapısı oluşturalım. Ve kullanıcı değerlerini api() metodu ile alalım. Eğer sorun çıkarsa facebook exception ile bunu yakalayıp ekrana bastıralım.

if ( $userid ){
    try {
        $profile = $facebook->api('/me');
    } catch ( FacebookApiException $e ){
        print $e->getMessage();
        $userid = null;
    }
}

Burada uygulamaya izin veren kullanıcının bilgilerini “/me” değerini göndererek alıyoruz. Bir dizi halinde $profile değişkeninde değerler depolanıyor eğer giriş yapılmış ise.

Şimdi giriş yapmışsa çıkış url’sini giriş yapmamış ise giriş url’sini yine metodlar ile belirleyelim;

if ( $userid ){
    $logout = $facebook->getLogoutUrl(array(
        'next' => 'http://www.erbilen.net/facebook/logout.php'
    ));
} else {
    $login = $facebook->getLoginUrl(array(
        'scope' => 'email'
    ));
}

Burada çıkış url’sinde next parametresini göndermek zorunda değilsiniz. Bu parametre şunu yapıyor, önce facebook’dan çıkış yapıyor kullanıcı eğer next parametresi varsa daha sonra oraya yönlendiriliyor. Yok ise geri geldiği sayfaya yönlendiriliyor. (Sanırım belay )

Giriş url’sinde ise scope parametresinde kullanıcıya ait ekstra bilgiler almak istersek bunları belirtiyoruz. Birden fazla için virgül ile ayırmanız gerekiyor. Eğer scope değeri belirtilmez ise kullanıcının herkese açık bilgileri (ki bu kişiden kişiye göre değişir) bilgileri alınır. Kesin olarak almanız gereken bir bilgi var ise bunu scope değerinde mutlaka belirtin.

Kullanabileceğiniz değerlere şu adresten ulaşabilirsiniz;
https://developers.facebook.com/docs/facebook-login/permissions/

Şimdi artık giriş yapmamışsa giriş yap linkini giriş yapmışsa profil bilgilerini ekrana yazdırabiliriz;

if ( $userid ){
    print_r($profile);
} else {
    print '<a href="'.$login.'">Giris Yap{C}{C}{C}{C}a>';
}

Evet her şey başarılıysa sizi kutlarım :)

Extra: Kullanıcının Arkadaş Listesini Almak

scope parametresine şöyle değiştirelim;

$login = $facebook->getLoginUrl(array(
    'scope' => 'email, read_friendlists'
));

Artık uygulamada kullanıcıdan arkadaş listesinide almayı teklif ediyoruz. Eğer kabul ederse bu arkadaş listesine api() metodu ile erişeceğiz. try – catch içinde bunu yapmıştık. $profile değişkeninden hemen sonra şöyle bir işlem yapacağız;

$friendlists = $facebook->api('/me/friends');

Burada ben “/me/friends” değerini kafamdan uydurmuyorum elbette :) Şöyle düşünün.
http://facebook.com/birolkahraman0/friends => /me/friends

Evet daha sonra print_r() ile $friendlists değişkeninin depoladığı elemanlara bir göz atabilirsiniz :)

Güncelleme: Facebook Çıkış İşlemi

Eğer herşeye rağmen çıkış yapılmıyor ise kullanıcının çıkış yapması için destroySession() metodunu kullanın.

$facebook->destroySession();

İNDİR
http://yadi.sk/d/67kS0qkjC9FJF

İlgili Sayfa Galerisi