Login dengan Facebook menggunakan PHP

Login dengan Facebook menggunakan PHP

Login dengan Facebook menggunakan PHP

Login dengan Facebook menggunakan PHP, Saat ini para pengguna web tidak tertarik untuk mengisi formulir besar untuk pendaftaran di website. Proses pendaftaran singkat membantu mendapatkan lebih banyak pelanggan ke situs web Anda. Login dengan Facebook adalah cara cepat dan ampuh untuk mengintegrasikan sistem pendaftaran dan login di situs web. Facebook adalah jejaring sosial paling populer dan sebagian besar penggunanya memiliki akun Facebook. Login Facebook memungkinkan pengguna untuk masuk ke situs web Anda menggunakan kredensial akun Facebook mereka tanpa mendaftar di situs web Anda.

PHP SDK memungkinkan mengakses API Facebook dari aplikasi web. Anda dapat dengan mudah menerapkan Login dengan akun Facebook menggunakan Facebook SDK untuk PHP. Tutorial ini akan menunjukkan bagaimana Anda dapat mengimplementasikan login pengguna dan sistem registrasi dengan Facebook menggunakan PHP dan menyimpan data profil pengguna ke dalam database MySQL. Contoh kami skrip Login Facebook menggunakan Facebook PHP SDK v5 dengan API Grafik Facebook untuk membangun sistem Login Facebook dengan PHP dan MySQL.

Persyaratan login facebook dengan php

Untuk memulai dengan versi terbaru Facebook SDK v5.x , pastikan sistem Anda memenuhi persyaratan berikut.

  • Versi PHP harus 5.4 atau lebih tinggi.
  • Ekstensi mbstring harus diaktifkan.

Struktur proyek

Sebelum Anda mulai mengintegrasikan Login dengan Facebook menggunakan PHP , lihat struktur file.

facebook_login_php /

‚Ēú‚ĒÄ‚ĒÄ config.php

‚Ēú‚ĒÄ‚ĒÄ index.php

‚Ēú‚ĒÄ‚ĒÄ logout.php

‚Ēú‚ĒÄ‚ĒÄ User.class.php

‚Ēú‚ĒÄ‚ĒÄ facebook-php-graph-sdk /

‚Ēú‚ĒÄ‚ĒÄ images /

‚Ēā ‚Ēú‚ĒÄ‚ĒÄ fb- login-btn.png

‚ĒĒ‚ĒÄ‚ĒÄ css /

‚ĒĒ‚ĒÄ‚ĒÄ style.css

Buat Aplikasi Facebook

Untuk mengakses API Facebook, Anda perlu membuat Aplikasi Facebook dan menentukan ID Aplikasi & Rahasia Aplikasi pada saat memanggil API Facebook. Ikuti panduan langkah demi langkah untuk membuat Aplikasi Facebook dan membuat App ID & Secret di Dasbor Pengembang Facebook.

  • Buka halaman¬†Facebook untuk Pengembang¬†dan masuk dengan akun Facebook Anda.
  • Klik¬†tautan¬†Aplikasi Saya¬†di bilah navigasi atas dan pilih¬†Tambahkan Aplikasi Baru¬†.
    • Masukkan¬†Nama Tampilan¬†dan¬†Email Kontak¬†.
    • Klik pada tombol¬†Buat ID Aplikasi¬†.
    • Anda akan diarahkan ke App Dashboard.
  • Arahkan ke halaman¬†Pengaturan ¬ĽDasar¬†.
    • Tentukan¬†Domain Aplikasi¬†dan pilih¬†Kategori¬†Aplikasi Anda.
    • Klik¬†Simpan Perubahan¬†.
  • Arahkan ke halaman¬†Tambahkan Produk¬†dengan mengklik link PRODUK (+) di panel menu navigasi kiri.
    • Pilih¬†Login Facebook¬†untuk¬†Mengatur¬†.
    • Pilih¬†Web¬†sebagai platform Aplikasi.
    • Masukkan¬†URL Situs¬†dan Simpan.
  • Arahkan ke halaman¬†Login ¬ĽPengaturan Facebook¬†.
    • Di kolom¬†Valid OAuth Redirect URIs¬†, masukkan Redirect URL.
    • Klik¬†Simpan Perubahan¬†.

Buka halaman¬†Pengaturan ¬ĽDasar¬†, catat¬†ID¬†Aplikasi¬†dan¬†Rahasia Aplikasi¬†.¬†ID Aplikasi dan Rahasia Aplikasi ini memungkinkan Anda mengakses API Facebook.

buat-facebook-pengembang-aplikasi-id-rahasia-codexworld

Perhatikan bahwa: ID Aplikasi dan Rahasia aplikasi perlu ditentukan dalam skrip pada saat panggilan API Facebook. Selain itu, URI Pengalihan OAuth yang Valid harus cocok dengan URL Pengalihan yang ditentukan dalam skrip.

Dapatkan Tautan Profil dan Jenis Kelamin

Untuk mengambil pengguna Facebook timeline hubungan dan jenis kelamin, Anda perlu mengirimkan permintaan untuk USER_LINK dan user_gender izin.

  • Buka halaman¬†Ulasan Aplikasi ¬ĽIzin dan Fitur¬†.
  • Permintaan¬†user_linkdan¬†user_genderizin dan kirimkan informasi yang diperlukan.

facebook-user-profile-link-gender-permission-request-codexworld

Setelah proses peninjauan selesai dan disetujui oleh Facebook, Anda akan bisa mendapatkan tautan profil pengguna dan jenis kelamin dari API Grafik Facebook.

Apakah Anda ingin panduan mendetail tentang pembuatan Aplikasi Facebook? Buka panduan ini untuk membuat Aplikasi Pengembang Facebook dan dapatkan ID Aplikasi & rahasia Aplikasi .

Buat Tabel Database

Untuk menyimpan informasi profil pengguna dari Facebook, tabel perlu dibuat di database. SQL berikut membuat userstabel dengan beberapa bidang dasar dalam database MySQL untuk menyimpan informasi akun Facebook.

CREATE TABLE `users` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`oauth_provider` enum('facebook','google','twitter','') COLLATE utf8_unicode_ci NOT NULL DEFAULT '',

`oauth_uid` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

`first_name` varchar(25) COLLATE utf8_unicode_ci NOT NULL,

`last_name` varchar(25) COLLATE utf8_unicode_ci NOT NULL,

`email` varchar(25) COLLATE utf8_unicode_ci NOT NULL,

`gender` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,

`picture` varchar(200) COLLATE utf8_unicode_ci NOT NULL,

`link` varchar(100) 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;

`create` datetime NOT NULL ,

` modified` datetime NOT NULL ,

PRIMARY KEY ( `id` )

) ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;

 

SDK Facebook untuk PHP

Direktori facebook-php-graph-sdk / berisi versi terbaru (v5) Facebook SDK untuk PHP. Anda tidak perlu mengunduhnya secara terpisah, semua file yang diperlukan dari Facebook PHP SDK v5 sudah termasuk dalam kode sumber PHP Login Facebook kami .

Kelas Pengguna (User.class.php)

Kelas User menangani operasi terkait database (menghubungkan, menyisipkan, dan memperbarui) menggunakan PHP dan MySQL. Ini membantu untuk terhubung ke database dan memasukkan / memperbarui data akun Facebook di tabel pengguna.

__construct () РHubungkan ke database MySQL.

checkUser () РMemasukkan atau memperbarui data profil pengguna berdasarkan penyedia dan ID OAuth. Mengembalikan data akun pengguna sebagai larik.

<?php
/*
 * User Class
 * This class is used for database related (connect, insert, and update) operations
 * @author    lkpnaura.com
 * @url        https://www. lkpnaura.com
 */

class User {
    private $dbHost     = DB_HOST;
    private $dbUsername = DB_USERNAME;
    private $dbPassword = DB_PASSWORD;
    private $dbName     = DB_NAME;
    private $userTbl    = DB_USER_TBL;
    
    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($data = array()){
        if(!empty($data)){
            // Check whether the user already exists in the database
            $checkQuery = "SELECT * FROM ".$this->userTbl." WHERE oauth_provider = '".$data['oauth_provider']."' AND oauth_uid = '".$data['oauth_uid']."'";
            $checkResult = $this->db->query($checkQuery);
            
            // Add modified time to the data array
            if(!array_key_exists('modified',$data)){
                $data['modified'] = date("Y-m-d H:i:s");
            }
            
            if($checkResult->num_rows > 0){
                // Prepare column and value format
                $colvalSet = '';
                $i = 0;
                foreach($data as $key=>$val){
                    $pre = ($i > 0)?', ':'';
                    $colvalSet .= $pre.$key."='".$this->db->real_escape_string($val)."'";
                    $i++;
                }
                $whereSql = " WHERE oauth_provider = '".$data['oauth_provider']."' AND oauth_uid = '".$data['oauth_uid']."'";
                
                // Update user data in the database
                $query = "UPDATE ".$this->userTbl." SET ".$colvalSet.$whereSql;
                $update = $this->db->query($query);
            }else{
                // Add created time to the data array
                if(!array_key_exists('created',$data)){
                    $data['created'] = date("Y-m-d H:i:s");
                }
                
                // Prepare column and value format
                $columns = $values = '';
                $i = 0;
                foreach($data as $key=>$val){
                    $pre = ($i > 0)?', ':'';
                    $columns .= $pre.$key;
                    $values  .= $pre."'".$this->db->real_escape_string($val)."'";
                    $i++;
                }
                
                // Insert user data in the database
                $query = "INSERT INTO ".$this->userTbl." (".$columns.") VALUES (".$values.")";
                $insert = $this->db->query($query);
            }
            
            // Get user data from the database
            $result = $this->db->query($checkQuery);
            $userData = $result->fetch_assoc();
        }
        
        // Return user data
        return !empty($userData)?$userData:false;
    }
}

 

Pengaturan Situs dan Konfigurasi API (config.php)

Pengaturan database dan variabel konstan konfigurasi API Facebook ditentukan dalam config.phpfile.
Konstanta Database:

  • DB_HOST – Tentukan host database.
  • DB_USERNAME – Tentukan nama pengguna database.
  • DB_PASSWORD – Tentukan kata sandi database.
  • DB_NAME – Tentukan nama database.
  • DB_USER_TBL – Tentukan nama tabel tempat data akun pengguna akan disimpan.

Konstanta API Facebook:

  • FB_APP_ID – Tentukan ID Aplikasi Facebook.
  • FB_APP_SECRET – Tentukan Rahasia Aplikasi Facebook.
  • FB_REDIRECT_URL – Tentukan URL Panggilan Balik.

Call Facebook API:

  • Pustaka PHP SDK digunakan untuk terhubung dengan Facebook API dan bekerja dengan klien OAuth.
<?php

/*

* Basic Site Settings and API Configuration

*/

// Database configuration

define('DB_HOST', 'MySQL_Database_Host');

define('DB_USERNAME', 'MySQL_Database_Username');

define('DB_PASSWORD', 'MySQL_Database_Password');

define('DB_NAME', 'MySQL_Database_Name');

define('DB_USER_TBL', 'users');

// Facebook API configuration

define('FB_APP_ID', 'Insert_Facebook_App_ID');

define('FB_APP_SECRET', 'Insert_Facebook_App_Secret');

define('FB_REDIRECT_URL', 'Callback_URL');

// Start session

if(!session_id()){

session_start();

}

// Include the autoloader provided in the SDK

require_once __DIR__ . '/facebook-php-graph-sdk/autoload.php';

// Include required libraries

use Facebook\Facebook;

use Facebook\Exceptions\FacebookResponseException;

use Facebook\Exceptions\FacebookSDKException;

// Call Facebook API

$fb = new Facebook(array(

'app_id' => FB_APP_ID,

'app_secret' => FB_APP_SECRET,

'default_graph_version' => 'v3.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;

}

 

Perhatikan bahwa: Anda akan menemukan ID Aplikasi dan Rahasia Aplikasi di halaman pengaturan Aplikasi Facebook.

Masuk & Dapatkan Data Akun Facebook (index.php)

Dalam file ini, proses otentikasi API Facebook ditangani menggunakan PHP.

  • Awalnya, URL otentikasi dibuat menggunakan¬†metode¬†getLoginUrl ()¬†dari kelas pembantu login dan tombol Masuk Facebook ditampilkan di halaman web.
  • Jika pengguna mengautentikasi dengan akun Facebook mereka, hal berikut akan terjadi:
    • Informasi profil diambil dari akun¬†Facebook¬†menggunakan¬†API Grafik Facebook¬†.
    • Data akun dimasukkan ke dalam database menggunakan¬†fungsi¬†checkUser ()¬†dari kelas User.
    • Info akun pengguna disimpan di SESSION.
    • Detail profil Facebook (Nama, Nama depan, Nama belakang, Email, Jenis kelamin, Gambar, dan tautan Profil) ditampilkan di halaman web.
    • Selain itu, tautan Keluar dibuat menggunakan¬†metode¬†getLogoutUrl ()¬†dari kelas pembantu login.
<?php

// Include configuration file

require_once 'config.php';

// Include User class

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's profile info from Facebook

try {

$graphResponse = $fb->get('/me?fields=name,first_name,last_name,email,link,gender,picture');

$fbUser = $graphResponse->getGraphUser();

} 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();




// Getting user's profile data

$fbUserData = array();

$fbUserData['oauth_uid'] = !empty($fbUser['id'])?$fbUser['id']:'';

$fbUserData['first_name'] = !empty($fbUser['first_name'])?$fbUser['first_name']:'';

$fbUserData['last_name'] = !empty($fbUser['last_name'])?$fbUser['last_name']:'';

$fbUserData['email'] = !empty($fbUser['email'])?$fbUser['email']:'';

$fbUserData['gender'] = !empty($fbUser['gender'])?$fbUser['gender']:'';

$fbUserData['picture'] = !empty($fbUser['picture']['url'])?$fbUser['picture']['url']:'';

$fbUserData['link'] = !empty($fbUser['link'])?$fbUser['link']:'';




// Insert or update user data to the database

$fbUserData['oauth_provider'] = 'facebook';

$userData = $user->checkUser($fbUserData);




// Storing user data in the session

$_SESSION['userData'] = $userData;




// Get logout url

$logoutURL = $helper->getLogoutUrl($accessToken, FB_REDIRECT_URL.'logout.php');




// Render Facebook profile data

if(!empty($userData)){

$output = '<h2>Facebook Profile Details</h2>';

$output .= '<div class="ac-data">';

$output .= '<img src="'.$userData['picture'].'"/>';

$output .= '<p><b>Facebook ID:</b> '.$userData['oauth_uid'].'</p>';

$output .= '<p><b>Name:</b> '.$userData['first_name'].' '.$userData['last_name'].'</p>';

$output .= '<p><b>Email:</b> '.$userData['email'].'</p>';

$output .= '<p><b>Gender:</b> '.$userData['gender'].'</p>';

$output .= '<p><b>Logged in with:</b> Facebook</p>';

$output .= '<p><b>Profile Link:</b> <a href="'.$userData['link'].'" target="_blank">Click to visit Facebook page</a></p>';

$output .= '<p><b>Logout from <a href="'.$logoutURL.'">Facebook</a></p>';

$output .= '</div>';

}else{

$output = '<h3 style="color:red">Some problem occurred, please try again.</h3>';

}

}else{

// Get login url

$permissions = ['email']; // Optional permissions

$loginURL = $helper->getLoginUrl(FB_REDIRECT_URL, $permissions);




// Render Facebook login button

$output = '<a href="'.htmlspecialchars($loginURL).'"><img src="images/fb-login-btn.png"></a>';

}

?>

<!DOCTYPE html>

<html lang="en-US">

<head>

<title>Login with Facebook using PHP by CodexWorld</title>

<meta charset="utf-8">

</head>

<body>

<div class="container">

<div class="fb-box">

<!-- Display login button / Facebook profile information -->

<?php echo $output; ?>

</div>

</div>

</body>

</html>

 

Keluar (logout.php)

Jika pengguna ingin keluar dari akun Facebook mereka, file logout.php dimuat.

  • Hapus token akses dan data pengguna dari SESI.
  • Alihkan pengguna ke beranda.
<?php

// Include configuration file

require_once 'config.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");

?>

 

Kesimpulan

Dalam tutorial ini, kami mencoba membuat implementasi Login dengan Facebook lebih cepat dan mudah. Kode contoh mengintegrasikan Facebook Login dengan Facebook SDK untuk PHP. Anda tidak perlu menambahkan file pustaka SDK secara terpisah, kode sumber kami berisi semua file yang diperlukan dengan SDK v5 untuk PHP. Anda hanya perlu menentukan beberapa pengaturan minimal untuk menambahkan sistem login dengan Facebook ke situs web Anda menggunakan PHP

 

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Need Help? Chat with us