PHP Kullanarak Facebook ile Giriş Yapın

PHP Kullanarak Facebook ile Giriş Yapın

Günümüzde kullanıcılar bir kayıt formu doldurup üye olmakla ilgilenmiyor. Kısa kayıt süreci, web sitenize daha fazla üye almanıza yardımcı olur. Facebook ile giriş, kayıt ve giriş sistemini web sitesine entegre etmenin hızlı ve güçlü bir yoludur. Facebook en popüler sosyal ağdır ve kullanıcıların çoğunun bir Facebook hesabı vardır. Facebook Login, kullanıcıların web sitenize kaydolmadan Facebook hesap kimlik bilgilerini kullanarak web sitenizde oturum açmalarına olanak tanır.

Bu yazı, Facebook ile kullanıcı giriş ve kayıt sistemini PHP kullanarak nasıl uygulayabileceğinizi ve kullanıcı profili verilerini MySQL veritabanına nasıl saklayacağınızı açıklayacaktır. Facebook PHP SDK v5'i kullanacağız.

PHP ve MySQL ile Facebook Giriş sistemi oluşturmak için Facebook Graph API kullanacaksınız.

Facebook SDK v5.0'ın en son sürümüne başlamak için, sisteminizin aşağıdaki gereksinimleri karşıladığından emin olun.

PHP sürümü 5.4 veya üstü olmalıdır.
Mbstring uzantısı etkinleştirilmelidir.
PHP kullanarak Facebook ile Giriş'i entegre etmeye başlamadan önce,
Klasörlere ve dosya yapısına bakın.

facebook-php-sdk /
PHP için Facebook SDK v5
User.class.php
fbConfig.php
index.php
logout.php
images/
fblogin-btn.png

Facebook Uygulamaları Oluşturma
Facebook API'ya erişmek için Facebook Uygulaması oluşturmalı ve Facebook API çağrısı sırasında App ID ve App Secret belirtmelisiniz. Uygulama Panosundan bir Facebook Uygulaması oluşturmak ve yapılandırmak için aşağıdaki talimatları izleyin.

  • Facebook App Dashboard'a gidin ve Facebook hesabınızla giriş yapın.
  • İstediğiniz adla (WebLogin gibi) yeni bir Facebook uygulaması oluşturun.
  • Facebook girişini localhost sunucusunda test etmek isterseniz, App Domains'leriniz localhost olmalıdır. Ancak, platformu ekledikten sonra sadece localhost etki alanı çalışır. Bir platform eklemek için soldaki menü panelindeki Ayarlar bağlantısına tıklayın »Platform ekle butonuna tıklayın» Web sitesi kategorisi seçin »Site URL'sini girin (http: // localhost / facebook_login_with_php /).
  • Yukarıdaki adımları tamamladıktan sonra, uygulama ayarları sayfanız aşağıdaki gibi bir şey olur.

facebook

  • Şimdi sol taraftaki menü panelindeki Durum ve İnceleme bağlantısına tıklayın ve uygulamalarınızı canlı hale getirin. Uygulamaların canlı seçeneğini etkinleştirmek için iletişim e-posta adresi gereklidir. Uygulama eklemediyseniz daha önce e-posta ile iletişim kurun, ayarlar sayfasına gidin ve e-posta ekleyin. İletişim e-postasını gönderdikten sonra, uygulamaları canlı olarak etkinleştirebilirsiniz.
  • Artık uygulamalarınızın oluşturulması tamamlandı.

Veritabanı Tablosu Oluşturma
Kullanıcı bilgilerini Facebook veritabanından alıp saklamak için MySQL veritabanında bir tablonun (kullanıcıların) oluşturulması gerekir. Başta, bir veritabanı (db gibi) oluşturun ve veritabanında aşağıdaki SQL'i çalıştırın. Aşağıdaki SQL, Facebook profil bilgilerini tutmak için veritabanındaki bazı temel alanlara sahip bir kullanıcı tablosu oluşturur.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `oauth_provider` enum('','facebook','google','twitter') COLLATE utf8_unicode_ci NOT NULL, `oauth_uid` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `first_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `last_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `gender` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `locale` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `cover` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `picture` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

PHP v5.0 için Facebook SDK
Facebook-php-sdk / dizini PHP için Facebook SDK'nın en son sürümünü (v5) içerir. Ayrı olarak indirmenize gerek yoktur, Facebook Giriş PHP kaynak kodumuza Facebook SDK v5 dahildir.

Kullanıcı sınıfı (User.class.php)
Kullanıcı sınıfı, kullanıcı verilerini PHP ve MySQL kullanarak veritabanına eklemek veya güncellemek için yardımcı olur.
User.class.php dosyasında, MySQL veritabanı kimlik bilgilerinize göre veritabanı ana bilgisayarı ($dbHost), kullanıcı adı ($dbUsername), parola ($dbPassword) ve ad ($dbName) belirtmeniz gerekir. Ayrıca, kullanıcının Facebook profili bilgilerini saklamak istediğiniz tablo adını ($userTbl) belirtin.

<?php
class User { private $dbHost = "localhost"; private $dbUsername = "root"; private $dbPassword = "root"; private $dbName = "codexworld"; private $userTbl = 'users'; function __construct(){ if(!isset($this->db)){ // Connect to the database $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName); if($conn->connect_error){ die("Failed to connect with MySQL: " . $conn->connect_error); }else{ $this->db = $conn; } } } function checkUser($userData = array()){ if(!empty($userData)){ // Check whether user data already exists in database $prevQuery = "SELECT * FROM ".$this->userTbl." WHERE oauth_provider = '".$userData['oauth_provider']."' AND oauth_uid = '".$userData['oauth_uid']."'"; $prevResult = $this->db->query($prevQuery); if($prevResult->num_rows > 0){ // Update user data if already exists $query = "UPDATE ".$this->userTbl." SET first_name = '".$userData['first_name']."', last_name = '".$userData['last_name']."', email = '".$userData['email']."', gender = '".$userData['gender']."', locale = '".$userData['locale']."', cover = '".$userData['cover']."', picture = '".$userData['picture']."', link = '".$userData['link']."', modified = NOW() WHERE oauth_provider = '".$userData['oauth_provider']."' AND oauth_uid = '".$userData['oauth_uid']."'"; $update = $this->db->query($query); }else{ // Insert user data $query = "INSERT INTO ".$this->userTbl." SET oauth_provider = '".$userData['oauth_provider']."', oauth_uid = '".$userData['oauth_uid']."', first_name = '".$userData['first_name']."', last_name = '".$userData['last_name']."', email = '".$userData['email']."', gender = '".$userData['gender']."', locale = '".$userData['locale']."', cover = '".$userData['cover']."', picture = '".$userData['picture']."', link = '".$userData['link']."', created = NOW(), modified = NOW()"; $insert = $this->db->query($query); } // Get user data from the database $result = $this->db->query($prevQuery); $userData = $result->fetch_assoc(); } // Return user data return $userData; }
}
?>

Facebook API Yapılandırması (fbConfig.php)
FbConfig.php dosyasında, Facebook API'sına bağlanmak ve SDK ile çalışmak için Facebook App ID ($appId), App Secret ($appSecret), Geri Arama URL'si ($redirectURL) ve İzinler ($fbPermissions) tanımlayın.

<?php
if(!session_id()){ session_start();
}
// Include the autoloader provided in the SDK
require_once __DIR__ . '/facebook-php-sdk/autoload.php';
// Include required libraries
use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;
/* * Configuration and setup Facebook SDK */
$appId = 'InsertAppID'; //Facebook App ID
$appSecret = 'InsertAppSecret'; //Facebook App Secret
$redirectURL = 'http://localhost/facebook_login_with_php/'; //Callback URL
$fbPermissions = array('email'); //Optional permissions
$fb = new Facebook(array( 'app_id' => $appId, 'app_secret' => $appSecret, 'default_graph_version' => 'v2.2',
));
// Get redirect login helper
$helper = $fb->getRedirectLoginHelper();
// Try to get access token
try { if(isset($_SESSION['facebook_access_token'])){ $accessToken = $_SESSION['facebook_access_token']; }else{ $accessToken = $helper->getAccessToken(); }
} catch(FacebookResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); exit;
} catch(FacebookSDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit;
}
?>

 

Giriş ve Profil Bilgileri (index.php)
Eğer kullanıcı Facebook hesabına giriş yapmışsa, profil detayları (isim, e-posta, cinsiyet, yer bilgisi, kapak fotoğrafı, profil resmi ve profil bağlantısı) görüntülenecektir, aksi halde Facebook giriş butonu görünecektir.

<?php
// Include FB config file && User class
require_once 'fbConfig.php';
require_once 'User.class.php';
if(isset($accessToken)){ if(isset($_SESSION['facebook_access_token'])){ $fb->setDefaultAccessToken($_SESSION['facebook_access_token']); }else{ // Put short-lived access token in session $_SESSION['facebook_access_token'] = (string) $accessToken; // OAuth 2.0 client handler helps to manage access tokens $oAuth2Client = $fb->getOAuth2Client(); // Exchanges a short-lived access token for a long-lived one $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']); $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken; // Set default access token to be used in script $fb->setDefaultAccessToken($_SESSION['facebook_access_token']); } // Redirect the user back to the same page if url has "code" parameter in query string if(isset($_GET['code'])){ header('Location: ./'); } // Getting user facebook profile info try { $profileRequest = $fb->get('/me?fields=name,first_name,last_name,email,link,gender,locale,cover,picture'); $fbUserProfile = $profileRequest->getGraphNode()->asArray(); } catch(FacebookResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); session_destroy(); // Redirect user back to app login page header("Location: ./"); exit; } catch(FacebookSDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } // Initialize User class $user = new User(); // Insert or update user data to the database $fbUserData = array( 'oauth_provider'=> 'facebook', 'oauth_uid' => $fbUserProfile['id'], 'first_name' => $fbUserProfile['first_name'], 'last_name' => $fbUserProfile['last_name'], 'email' => $fbUserProfile['email'], 'gender' => $fbUserProfile['gender'], 'locale' => $fbUserProfile['locale'], 'cover' => $fbUserProfile['cover']['source'], 'picture' => $fbUserProfile['picture']['url'], 'link' => $fbUserProfile['link'] ); $userData = $user->checkUser($fbUserData); // Put user data into session $_SESSION['userData'] = $userData; // Get logout url $logoutURL = $helper->getLogoutUrl($accessToken, $redirectURL.'logout.php'); // Render facebook profile data if(!empty($userData)){ $output = '<h2 style="color:#999999;">Facebook Profile Details</h2>'; $output .= '<div style="position: relative;">'; $output .= '<img src="'.$userData['cover'].'" />'; $output .= '<img style="position: absolute; top: 90%; left: 25%;" src="'.$userData['picture'].'"/>'; $output .= '</div>'; $output .= '<br/>Facebook ID : '.$userData['oauth_uid']; $output .= '<br/>Name : '.$userData['first_name'].' '.$userData['last_name']; $output .= '<br/>Email : '.$userData['email']; $output .= '<br/>Gender : '.$userData['gender']; $output .= '<br/>Locale : '.$userData['locale']; $output .= '<br/>Logged in with : Facebook'; $output .= '<br/>Profile Link : <a href="'.$userData['link'].'" target="_blank">Click to visit Facebook page</a>'; $output .= '<br/>Logout from <a href="'.$logoutURL.'">Facebook</a>'; }else{ $output = '<h3 style="color:red">Some problem occurred, please try again.</h3>'; }
}else{ // Get login url $loginURL = $helper->getLoginUrl($redirectURL, $fbPermissions); // Render facebook login button $output = '<a href="'.htmlspecialchars($loginURL).'"><img src="images/fblogin-btn.png"></a>';
}
?>
<html>
<head>
<title>Login with Facebook using PHP by CodexWorld</title>
</head>
<body> <!-- Display login button / Facebook profile information --> <div><?php echo $output; ?></div>
</body>
</html>

 

Çıkış (logout.php)
Kullanıcı hesabından çıkış yapmak istediğinde, Facebook hesabından çıkış yaptıktan sonra logout.php dosyası yüklenecektir.

<?php
// Include FB config file
require_once 'fbConfig.php';
// Remove access token from session
unset($_SESSION['facebook_access_token']);
// Remove user data from session
unset($_SESSION['userData']);
// Redirect to the homepage
header("Location:index.php");
?>

 

Sonuç
Bu yazıda, Facebook Giriş uygulamasını daha hızlı ve kolay hale getirmeye çalıştık. Bu örnek kod, Facebook Girişi ile PHP için Facebook SDK'yı birleştirir. Komut dosyanızı kullanarak, herhangi bir SDK veya API dosyasına ayrı ayrı ihtiyacınız yoktur, kaynak kodumuz PHP için SDK v5 ile gerekli tüm dosyaları içerir.
Sadece Facebook kullanarak web sitenize PHP kullanarak giriş sistemi eklemek için bazı minimum ayarları belirtmeniz gerekir.

 

Bu yazıyı beğendiniz mi? Bültenimize katılın ve bizi takip edin!


Bu yazıyı 5 yıldız üzerinden kaçla değerlendirirsiniz?
Daha önce bu yazı 0 kez değerlendirilmiş ve ortalama 0 yıldız verilmiş.
Bu yazı daha önce 177 kez okundu.

Facebook Yorumları

Yorumlar

Bu yazıya henuz bir yorum yapılmamış. İlk yorumu yapan siz olun!

Yorum Yaz

Bombacı Adam Oyunu OynayınBig Shot BoxingTenis OyunuKare Yapmaca
RGS-CardMaster

RGS-CardMaster

16 Nis 2018 / Ofis
Opera@USB

Opera@USB

16 Nis 2018 / İnternet
Vital Desktop

Vital Desktop

11 Nis 2018 / Masaüstü
Access To MySQL

Access To MySQL

11 Nis 2018 / Araçlar
Akram Audio Converter

Akram Audio Converter

11 Nis 2018 / Multimedya
Poliçe Takip

Poliçe Takip

05 Nis 2018 / Ofis
Opera@USB

Opera@USB

16 Nis 2018 / İnternet
RGS-CardMaster

RGS-CardMaster

16 Nis 2018 / Ofis
Access To MySQL

Access To MySQL

11 Nis 2018 / Araçlar
Vital Desktop

Vital Desktop

11 Nis 2018 / Masaüstü