PHP ile Facebook Giriş Uygulaması

Bu dersimizde facebook’un php kütüphanesini kullanarak giriş işleminin nasıl yapıldığını ve kullanıcıya ait özel bilgilerin nasıl alındığını öğreneceğiz, yararlı olması dileğiyle..

Önce bir uygulama lazım!

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 videoya 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</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/tayfunerbilen/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();

DEMO

Demo adresinde uygulamaya izin vererek demoyu görüntüleyebilirsiniz.
http://www.erbilen.net/facebook/index.php

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

Yayınlayan

Tayfun Erbilen

2009'dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“PHP ile Facebook Giriş Uygulaması” üzerine 18 yorum

  1. tayfun hocam profil fotoğrafını nasıl çekicez ufak bi kod ekleme yapabilir miyiz ?

  2. Paylaşım için teşekkürler.
    Başarılıyla giriş yapıldıktan sonra yönlendirdiğim sayfanın sonuna #_=_ ekliyor. Yüzeysel de olsa araştırdım fakat çözüm bulmadım.

  3. 3. videoyu sabırsızlıkla bekliyorum facebook taki arkadaş listesine mesaj atma vb gibi konulara deyinirsen sevinirim

  4. Merhabalar Tayfun hocam derslerini ilgiyle takip ediyorum hepsi birbirinden güzeller eline emeğine koluna klavyene herşeyine sağlık 😀

  5. Ders içine ellerine ve sesine sağlık.
    Ben burda şunu merak ediyorum. Yaptığımız siteye bir fotoğraf upload yaptığımızda, facebook sayfasında da görüntülenmesini sağlayabilir miyiz? Siteye ayrı facebook sayfasına ayrı ayrı foto atmak yerine tek seferde iki yere birden.

    1. Elbette yapabilirsiniz. duvara yazma izni aldıktan sonra kullanıcıdan istediğiniz gibi post işlemini yapabilirsiniz, facebook api sayfasında fotoğraf yükleme örneğinin kodları bulunuyor.

  6. Tayfun acaba extented token almayı çözebilir misin ben baya uğraştım çözemedim çünkü bir ay önce facebook offline access token’ı kaldırdı bunun yerine extented token getirdim 60 gün süreli bir token bununlar içerikleri nasıl çekerim bir bakar mısın belki çözersin.? : ) Çözersen dile benden ne dilersen 🙂

  7. Tayfun hocam giriş yaptırdıktan sonra işlem mantıgı nasıl olması gerekiyor, örnek üye yorum yapıyor veya kullanıcı adını sitede değiştirecek bununla ilgili detay verebilirmisiniz

  8. Fatal error: Uncaught exception ‘Exception’ with message ‘Facebook needs the CURL PHP extension.’ in C:\wamp\www\facebo\src\base_facebook.php:19 Stack trace: #0 C:\wamp\www\facebo\src\facebook.php(18): require_once() #1 C:\wamp\www\facebo\index.php(5): require(‘C:\wamp\www\fac…’) #2 {main} thrown in C:\wamp\www\facebo\src\base_facebook.php on line 19

    bu hatayı alıyorm hep

    1. Hatanın sebebi, sunucunuzda curl eklentisinin yüklü olmamasından kaynaklanıyor. Eğer sunucu sahibi sizseniz keniniz yükleyin, ya da hosting sağlayıcınız ile görüşün yükletin.

  9. süpersin ustadım vallahi:) diline sağlık anlatımın bölesi 10 üzri 10.5:P

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir