• Hack kategorilerindeki birçok içerik Gizli içeriktir yani sadece cevap yazarakı erişebileceğiniz türden içeriklerdir, ancak yeni üyelerin hack kategorilerine cevap yazması engellenmiştir ! spam ve sömürüye karşı bir tedbirdir, forumumuza katkı sunarsanız rütbeniz kısa sürede yükselir ve tüm forumu engelsiz kullanabilirsiniz.

PHP ile "Facebook Connect" Entegrasyonu Nasıl Yapılır ?

Mr.Emre

RedMaster
Uygulama oluşturma
Öncelikle https://developers.facebook.com/apps adresine girip, Yeni Uygulama Oluştur butonuna tıklayın.

App Name: Uygulamanızın adı. 3-32 karakter arası.

Devam deyip, sonraki sayfada Captcha doğrulamasını yapın. Uygulamanız oluşturuldu. Karşınıza uygulama Temel sayfası gelecek. Burada uygulamanız için hayati önem taşıyan bilgiler bulunuyor. En önemli bilgiler;
  • App ID
  • App Secret

Bu bilgileri mutlaka bir yere kaydedin ve kimseyle paylaşmayın. Bunlar sizin Facebook e-posta adresi ve parolanız gibi. Yani uygulamanızın Facebook ile iletişime geçmesi için gerekli olan oturum açma bilgileri gibi.

Aynı sayfada aşağıda, Facebook Girişi Olan İnternet Sitesi sekmesini açın ve internet sitenizin, hatta mümkünse Facebook Connect kullanan sitenizin dizininin adresini yazın. Örneğin Facebook Connect'i localhost'ta kullanacaksınız (deneme amaçlı yada geliştirme amaçlı), adrese http://localhost/ yazın. Uygulamayı başka bir adreste kullanacaksanız, http://siteadresiniz.com/ yazın. Facebook yönlendirmeleri, güvenlik açısından sadece burada belirttiğiniz URL'lere yapıyor.

Facebook PHP SDK indirme
Temel sayfasındaki işlerimiz bitti. Şimdi geliştirme aşamasına geçeceğiz. Facebook, işimizi kolaylaştırmak için bize SDK'lar yapmış. Açılımı Software Development Kit. Yani Yazılım geliştirme kiti. PHP için bu kiti indireceğiz.

https://github.com/facebook/facebook-php-sdk adresine girin. src klasörünün içinde bulunan 3 dosyayı indirin. İndireceğiniz dosyaların isimleri;
  • base_facebook.php
  • facebook.php
  • fb_ca_chain_bundle.crt

Dizin yapısı oluşturma
Dosyaları indirdiniz. Şimdi bir klasör yapısı oluşturalım. Çalışmayı localhostta yaptığımızı düşünelim. Ana dizininizde FCDeneme isimli bir klasör oluşturun. Yani bu bölüme http://localhost/FCDeneme yazınca ulaşabilelim.

FCDeneme klasörünün altına facebook isimli bir klasör oluşturun. İndirdiğimiz 3 Facebook SDK dosyasını bu klasöre atın.

Şimdi klasör yapımız şu şekilde olmalı;
-/FCDeneme/
---/facebook/

FCDeneme klasörünün içine 3 dosya daha oluşturacağız. Birinin adı tahmin edeceğiniz üzere index.php, birinin adı ayar.php, birinin adı fbout.php, birinin adı ise fbin.php olsun.

Yeni yapı;
-/FCDeneme/
---/facebook/
---index.php
---fbin.php
---ayar.php
---fbout.php

Veritabanı oluşturma
Şimdi bir de veritabanı yapısı düzenleyelim. Veritabanı oluşturun. Adı fb olsun. İçine uyeler diye bir tablo oluşturun. Sütunları;
  • id(INT),auto_increment,11;
  • fbID(VARCHAR),11
  • adsoyad(VARCHAR),255

Facebook PHP SDK hakkında
Facebook Apilerini kullanmak için birçok farklı yöntem var. Her yöntemde kendimizi ve uygulamamızı bir şekilde Facebook'a tanıtmamız gerekiyor. Facebook hali hazırda Oauth 2 protokollerini destekliyor. Oauth ile kendimizi ve uygulamamızı Facebook'a tanıtmak için bir dizi işlem yapıyoruz. Ama bunu daha basit ve kullanışlı hale getirmek için Facebook bir SDK oluşturmuş.Bu SDK sayesinde hem Oauth protokolünün sağlanması hem de Facebook üzerinde değişikler,işlemler yapmak çok kolaylaşıyor.

Kod yazmaya başlayalım
ayar.php dosyamızı açalım. İçine öncelikle veritabanı bağlantılarımızı yazarak başlayalım.

ayar.php
PHP:
mysql_connect("DB_HOST","DB_USER","DB_PASSWORD");
mysql_select_db("fb");
Ardından FB tanımlama bilgilerini gireceğiz. Facebook Temel sayfasında App ID ve App Secret bilgilerini almıştık hatırlarsanız.
ayar.php
PHP:
session_start();

mysql_connect("DB_HOST","DB_USER","DB_PASSWORD");
mysql_select_db("fb");

$fbayar = array();
$fbayar['appId']="FACEBOOK APP ID";
$fbayar['secret']="FACEBOOK APP SECRET";
ayar.php dosyamızın içeriği bu şekilde. Bu dosyada artık bir değişiklik yapmayacağız. Bu dosya sessionları kullanabilmemiz için gerekli komutu, veritabanı bağlantı bilgilerimizi ve Facebook uygulama bilgilerimizi taşıyan $fbayar dizi değişkenini barındırıyor.

Giriş ve çıkış URL'lerinin gösterilmesi
Üyelik sistemlerinde basit mantık şudur. Eğer giriş işlemi ile ilgili session yada cookie oluşturulmuşsa çıkış bağlantısı, oluşturulmamışsa giriş bağlantısı gösterilir.

Biz bu uygulamada giriş bilgilerini cookie ile değil sessionlar ile tutacağız.

index.php dosyamızı oluşturmaya başlayalım.

index.php
PHP:
require_once("ayar.php");
require_once("facebook/facebook.php");

$facebook = new Facebook($fbayar);

if(@$_SESSION['fboturum']=="tamam"){
// giriş yapılmışsa burası
}
else{
// giriş yapılmamışsa burası
}
Session koşullarını yaptık. Şimdi giriş ve çıkış URL'lerini alacağız. Buraya kadar olan olayları anlatırsak;
  • ayar.php dosyasını çağırdık
  • facebook.php dosyasını çağırdık
  • $facebook değişkeni oluşturduk. Facebook sınıfına $fbayar dizisini göndererek bağlandık.
  • Giriş yapılmışsa, giriş yapılmamışsa durumlarını sessionları kullanarak belirledik.

Facebook SDK'sı, giriş ve çıkış URL'lerini getLoginUrl ve getLogoutUrl metodlarıyla tutuyor.

// Giriş URL'si
PHP:
$girisurl = $facebook->getLoginUrl(array(
     'scope' => 'publish_stream,email',
     'redirect_uri' => 'http://localhost/FCDeneme/fbin.php'
));
//Çıkış URL'si
PHP:
$cikisurl = $facebook->getLogoutUrl(array(
     'next' => 'http://localhost/FCDeneme/fbout.php'
));
Burayı biraz açıklayalım. Facebook SDK'sı, giriş ve çıkış URL'lerini getLoginUrl ve getLogoutUrl metodlarıyla tutuyor demiştik.

Giriş URL'sine dikkat ettiyseniz scope ve redirect_uri değerleri bulunuyor. scope, giriş yapıldığı taktirde, kullanıcının hangi bilgilerinin alınacağıyla ilgili. Normalde scope değeri atamazsanız, facebook https://developers.facebook.com/docs...d-friend-list/ sayfasında belirtilen verileri, kullanıcı giriş yapınca varsayılan olarak geri gönderiyor. Ancak e-posta adresini alma yada kişinin profilinde birşeyler paylaşma arzusundaysanız, ek izinler almanız gerekiyor. Bu izinler kişi sizin giriş urlnize tıklandığında kullanıcıya gösteriliyor ve izin vermesi isteniyor. İzin verilmişse, facebook bu bilgileri sizinle paylaşıyor ve izin veriyor. İzinlerle ilgili daha fazla bilgiyi https://developers.facebook.com/docs...n/#permissions sayfasından alabilirsiniz. Giriş Urlsinde bir de redirect_uri bulunuyor. Bu adres, giriş yapıldığında yada kullanıcı girişi iptal ettiğinde dönülecek olan adresi belirliyor.

Çıkış URL'sinde next verisini göreceksiniz. Bu da çıkış yapıldığında facebook'un kullanıcıyı sizin sitenizde yönlendireceği adresi gösteriyor.

index.php dosyasını düzenlemeye devam edelim.

index.php
PHP:
require_once("ayar.php");
require_once("facebook/facebook.php");

$facebook = new Facebook($fbayar);

if(@$_SESSION['fboturum']=="tamam"){
// giriş yapılmışsa burası
$cikisurl = $facebook->getLogoutUrl(array(
     'next' => 'http://localhost/FCDeneme/fbout.php'
));
echo "<a href=\"{$cikisurl}\">Çıkış yapmak için tıklayın.</a>";
}
else{
// giriş yapılmamışsa burası
$girisurl = $facebook->getLoginUrl(array(
     'scope' => 'publish_stream,email',
     'redirect_uri' => 'http://localhost/FCDeneme/fbin.php'
));
echo "<a href=\"{$girisurl}\">Facebook ile giriş için tıklayın.</a>";
}
index.php dosyamız hazır.

Ziyaretçimiz sitemize gelecek. Oluşturulan giriş url'sine tıklayacak ve Facebook'a yönlenecek. Orada uygulamamıza izin verecek veya vermeyecek ve http://localhost/FCDeneme/fbin.phpadresimize geri yönlenecek.

Şimdi fbin.php dosyamızı düzenleyeceğiz.

Giriş yapıldıktan veya yapılmadıktan sonraki işlemler

Söylediğimiz gibi fbin.php dosyamız şunun için kullanılacak. Kullanıcı sitemize girecek. Giriş URLsine tıklayacak ve facebook'a yönlenecek. Orada giriş yap veya iptal butonuna tıklayacak ve fbin.php sayfamıza geri dönecek.

Bu durumda şu koşullar oluşabilir.
  1. Ziyaretçi uygulamamıza izin verebilir.
  2. Ziyaretçi uygulamamıza izin vermeden iptal'e tıklayabilir.

İptal'e tıklanırsa sitemize geri döner ve yine giriş urlsini görür.

Ancak izin verilirse yine ortaya birkaç farklı koşul çıkabilir. Malum bir veritabanımız var.
  1. Ziyaretçi uygulamamıza ilk kez izin veriyor olabilir. Veritabanı kontrol edilmeli, kullanıcı yoksa veritabanına kayıt edilmeli ve oturum açılmalıdır.
  2. Ziyaretçi daha önce uygulamamıza izin vermiş olabilir. Bu durumda veritabanı kontrol edilmeli, kullanıcı varsa sadece oturum açılmalıdır. Veritabanına aynı kullanıcıyı tekrar eklemek istemeyiz.

fbin.php
PHP:
require_once("ayar.php");
require_once("facebook/facebook.php");
Önce kullanıcının iptal'e basma durumunu süzelim. Eğer kullanıcı izin sayfasında iptal'e bastıysa facebook, fbin.php dosyamıza $_GET['error'] verisi gönderir. Eğer izin verilmişse, geri dönen bilgilerde böyle bir veri olmaz.

fbin.php
PHP:
require_once("ayar.php");
require_once("facebook/facebook.php");

$facebook = new Facebook($fbayar);

if(isset($_GET['error'])){
     // İzin verilmedi, iptale tıklandı.
     header("Location: index.php");
     // Hiçbirşey yapmadık, kullanıcıyı sadece index.php sayfasına yönlendirdik.
}
else{
     // İzin verilme koşulu sağlandıysa
}
İptal durumunu süzdük.
 
Üst