Php ile Facebook Api Kullanımı

PHP ile Facebook Yazılım Geliştirme Kiti olan SDK kullanarak duvarında paylaşmayı göstermeye çalışacağım.

Öncelikle Facebook Geliştirme sayfası olan https://developers.facebook.com/apps/ adresinden giriyoruz.

Buradan aşağıdaki sayfada var olan “Add a New App” uygulamasına tıklıyoruz.

facebook-api-list

Burada açılan sayfadan sonra Uygulama adını giriyoruz.

facebook-api-create-1

Uygulama Adının uygunluğu halinde aşağıdaki şekilde sizden eğer daha önceden uygulama yaptıysanız test için kullanmak istediğimizi sormaktadır.

Eğer ilk defa uygulama oluşturuyorsak bu bölüm muhtelemen olmayacaktır ve oluşturmak istediğimiz uygulama kategorisini seçerek devam ediyoruz işlemimize.

facebook-api-create-2

Create App ID düğmesine tıkladığımızda aşağıdaki resimdeki gibi uyarı veriyorsa muhtemelen uygulama adında kullandığımız karakterlerden veya mevcut isim olduğundan bu şekilde çıkacaktır. Bu şekilde bir uyarıda ismimi değiştirip başarılı sonuca uğraşana kadar devam edeceğiz. Bunun için mevcut pencereyi kapatıp bir önceki adımda ismimizi tekrardan yazmamız gerekecek.

facebook-api-error-1

Başarılı bir şekilde uygulmayı oluşturabilirsek aşağıdaki gibi 4 adımda uygulamamızın genel ayarlarını yapabileceğimiz görüntü gelecektir.

facebook-api-succes

Genel ayarlardan uygulamanın çalışacağı adresi Site URL’si kısmını doldurup İler düğmesine basmanız yeterli olacaktır.

facebook-api-setting1

Uygulamaya sayfanızda doğrulama testi için aşağıdakine benzer oluşan kodu sayfanıza ekleyebilirsiniz. Dilerseniz üst kısımdan Finished düğmesini tıklayıp ayarlandırmaları sonlandırabilirsiniz.

facebook-api-setting2

Uygulama oluşturmayı bu şekilde sonlandırmış bulunmaktayız. Fakat yapacağımız işlem bitmedi.

Facebook API ilk oluşumda Aktif olmayacaktır. Aktif etmek için Uygulama sayfasından Status & Review – (Durum) kısmından aktif yapmak gerekli. Fakat durum kısmının açma-kapama düğmesinin aktifliği için Facebook API kısmı bizden kullanacağımız site(leri)mizin adresini ve geçerli bir e-posta adresi istemekte.
Bu işlemi aşağıdaki resimdeki gibi Settings ( Ayarlar ) sekmesindeki
App Domains ( Uygulama Domainleri ) kısmına sitemizin adresini,
Contact E-mail ( İletişim E-posta ) kısmına kullanılan e-posta adresi yazmalıyız.

facebook-api-setting3

E-posta ekledikten sonra daha önce belirttiğimiz Status & Review (Durum) kısmından aktif hale getireceğiz.

facebook-api-status-offline

facebook-api-status-online

Facebook API ile işlem yapmak için iki adet şifre gerekmektedir. App ID ve App Secret kısmındaki bilgiler. Bunları Dashboard ( Ana Ekran ) sekmesinden alıyoruz uygulamamızı kullanmak için gerekli işlemleri tamamlıyoruz 🙂

Facebook API ile çalışma mantığını kısaca şöyle özetleyebilirim:

Facebook üye girişi yaparak uygulamayı belirtilen izinler dahilinde kullanıcı kabul eder. Kabul edilen uygulama belirtilen adrese tekrardan geri dönüş yapar. Üye girişi yapılan hesap ile alınan izin dahilinde işlemler yapılır.

Uygulama örneğimizde dosyalarımız şu şekildedir:

-Facebook SDK ( Temel Dosyalar ) ( facebook.php, base_facebook.php, fb_ca_chain_bundle.crt )
-Facebook Giriş İşlemi ( faceLogin.php )
-Facebook API Değerleri ( faceSet.php )
-Ana Sayfamız ( index.php )

Burada temel dosyalar haricindeki kısımları aşağıda paylaşayacağım.

Facebook API Değerleri – faceSet.php

<?php
include( 'facebook.php' );

/* Bu Değerleri Facebook Api Sayfasından Almanız Gerekli */
$facebook = new Facebook(
	array(
		'appId' => '',
		'secret'=> '',
		'cookie'=> true
	)
);

$user = $facebook->getUser();

Facebook Uygulama Kabul İşlemi – faceLogin.php

<?php
include( 'faceSet.php' ); // Genel Değişkenler

if ( !$user ){
	if( !isset($_GET['error_code']) ){		
		$loginUrl = $facebook->getLoginUrl(array(
			'scope'			=> 'email,publish_actions', //İstediğimiz izinler
			'redirect_uri'	=> $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], // Olumlu&Olumsuz dönüş sayfamız
		));
		
		header('Location: ' . $loginUrl);		
		exit;
	} else {
		exit( $_GET['error_description'] );
	}
}

?>
<?php if ( $user ){?>
	<script type="text/javascript">
		window.opener.faceLogin();
		window.close();
	</script>
<?php }?>

Anasayfa – index.php

<?php
include( 'api/faceSet.php' ); // Genel Değişkenler

if ( isset( $_POST['p'] ) ){
	
	function dosyaIslem(){
		$dosyaDegisken = 'faceResim';
		if ( !isset($_FILES[$dosyaDegisken]) ){
			return false;
		}
		
		if ( $_FILES[$dosyaDegisken]['error'] ){ // Dosya yükleme işleminde hata olduysa
			return false;
		}
		
		$resimKontrol = getimagesize($_FILES[$dosyaDegisken]['tmp_name']);
		
		if ( $resimKontrol === FALSE ){ // Dosya resim kontrolü
			return false;
		}
		
		$dosyaYol = 'upload/';
		$dosyaYol2 = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; // Bu işlem resim yüklendikten sonra geçerli bir url adresi vermek için
		$dosyaAdi = basename($_FILES[$dosyaDegisken]['name']);
		
		if ( move_uploaded_file( $_FILES[$dosyaDegisken]['tmp_name'], $dosyaYol . $dosyaAdi ) ){
			return $dosyaYol2 . $dosyaAdi;
		} else {
			return false;
		}
		
	}

	if ( !isset($_POST['faceMesaj']) || !$_POST['faceMesaj'] ){
		exit("Lütfen mesaj giriniz");
	} else {
		$faceMesaj = $_POST['faceMesaj'];
	}
	
	
	if ( $user ){
		$url = '';
		$image = '';
	
		if ( isset($_POST['faceURL']) && $_POST['faceURL'] ){
			$url = $_POST['faceURL'];
		}
		
		if ( $dosyaAdi = dosyaIslem() ){
			$image = $dosyaAdi;
		}
		
		$type = '/me/feed';
		$tmpArray = array(
			'message'       => $faceMesaj,
			'link'          => $url,
			'picture'       => $image
		);	
		
		
		try{
			$facePostID = $facebook->api($type, 'POST', $tmpArray);
			
			$tmpURL = 'https://www.facebook.com/'.$user.'/posts/' . $facePostID;
			
			$returnMsg = array(
				'islemSonuc' => true,
				'islemMsj' => $tmpURL,
			);
		
		}catch(FacebookApiException $e){
			$returnMsg = array(
				'islemSonuc' => false,
				'islemMsj' => 'Mesajınız gönderilemedi',
			);
		}
	} else {
		$returnMsg = array(
			'islemSonuc' => false,
			'islemMsj' => 'Üye girişi yapılamadı',
		);
	}
}			 
?>
<!DOCTYPE html>
<html>
<head>
	<title>PHP ile Facebook API Dvarında Paylaş</title>
	<meta charset="UTF-8">
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

	<!-- Optional theme -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
	
	<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
	
	<!-- Latest compiled and minified JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
	<div class="panel panel-primary dialog-panel">
		<div class="panel-heading">
			<h5>Facebook API ile Mesaj Gönder</h5>
		</div>
		<div class="panel-body">
			<?php if ( isset($returnMsg) ){ ?>
				<?php if ( $returnMsg['islemSonuc'] ){ ?>
					<p class="bg-success">
						<a target="_blank" href="<?php echo $returnMsg['islemMsj'];?>">
							Tebrikler. Mesaja Bakmak İçin Tıklayınız!
						</a>
					</p>				
				<?php } else { ?>
					<p class="bg-danger"><?php echo $returnMsg['islemMsj'];?></p>				
				<?php } ?>
			<?php } ?>
			
			<form id="formWall" action="" method="post" class="form-horizontal" role="form" enctype="multipart/form-data">
				<div class="form-group">
					<label class="control-label col-md-2 col-md-offset-2" for="faceMesaj">Mesajınız</label>
					<div class="col-md-6">
						<textarea name="faceMesaj" class="form-control" required placeholder="Mesajınızı yazınız" rows="3"></textarea>
					</div>
				</div>
				<div class="form-group">
					<label class="control-label col-md-2 col-md-offset-2" for="faceURL">URL</label>
					<div class="col-md-6">
						<input type="url" name="faceURL" class="form-control" placeholder="Mesajınıza tıklandığında yönlendirilecek adres" />
					</div>
				</div>
				<div class="form-group">
					<label class="control-label col-md-2 col-md-offset-2" for="faceResim">Resim</label>
					<div class="col-md-6">
						<input type="file" id="faceResim" name="faceResim" />
					</div>
				</div>
				<div class="form-group">
					<div class="col-md-10">
						<button class="btn-lg btn-primary" style="float:right" type="submit">Duvarın Paylaş!</button>
					</div>
				</div>
				<input type="hidden" name="p" />
			</form>
			
			<form id="formLogin" method="post" class="form-horizontal" role="form">
				<div class="form-group">
					<label class="control-label col-md-2 col-md-offset-2" for="faceLogin">Facebook Durumu</label>
					<div class="col-md-6">
						<button class="btn-primary">Giriş Yap</button>
					</div>
				</div>
			</form>
		</div>
	</div>
</div>

<script type="text/javascript">
	<?php if ( $user ){ ?>
		$('#formLogin').hide();
	<?php } else { ?>
		$('#formWall').hide();
	<?php } ?>
	
	
	$('#formLogin').submit(function(event){
		event.preventDefault();
		var myFaceWindow = window.open('api/faceLogin.php','myFaceWindow');
	});
	
	function faceLogin(){
		$('#formLogin').hide();
		$('#formWall').show();
	}
</script>
</body>
</html>

Uygulama Örnek Sayfası

PHP ile Facebook API Uygulamasını İndir

Paylaş: