Masuk dengan facebook php mysql

Facebook tidak diragukan lagi adalah jejaring sosial terbesar di dunia dengan lebih dari 2. 7 miliar pengguna terdaftar dan aktif. Jika aplikasi web Anda menyediakan opsi untuk mengautentikasi pengguna dengan data Facebook mereka, maka seluruh proses pendaftaran dan login Anda menjadi jauh lebih mudah. Mari pelajari cara menerapkan autentikasi pengguna dengan Facebook

Cara membuat ID Aplikasi Facebook dan Kunci Rahasia

Buka Facebook untuk Pengembang, masuk ke akun Anda dan klik Aplikasi Saya di bilah navigasi. Klik tombol Create App, pilih "Build Connected Experiences" dan lanjutkan.

Masuk dengan facebook php mysql

Beri aplikasi Anda nama tampilan dan email kontak, lalu buat aplikasi.

Masuk dengan facebook php mysql

Di layar berikutnya, isi App Domains, Privacy Policy URL, dan Terms of Service URL. Pilih Kategori dan Tujuan Aplikasi, lalu Simpan Perubahan

Masuk dengan facebook php mysql

Di menu samping, klik PRODUK + dan atur Login Facebook. Pilih Web di layar berikutnya

Masuk dengan facebook php mysql

Informasi selanjutnya yang harus ditentukan adalah URL Situs Anda dan Simpan

Masuk dengan facebook php mysql

Di menu samping, klik Pengaturan yang ada di bawah Login Facebook. Anda diharapkan memberikan setidaknya satu URI Pengalihan OAuth yang Valid. Penting juga untuk dicatat bahwa http. //localhost/ jenis URI tidak akan diterima sebagai valid. Saya akan segera memberikan informasi lebih lanjut tentang penyiapan localhost

Masuk dengan facebook php mysql

Terakhir, alihkan tombol status dari mode "Dalam pengembangan" ke mode "Langsung" jika Anda dapat memberikan semua kriteria yang dibutuhkan oleh Facebook agar aplikasi Anda disetujui. Saat aplikasi Anda dalam mode 'Langsung', Anda memiliki izin untuk meminta berbagai data pengguna tanpa batasan apa pun. Namun, jika Anda berencana untuk menguji implementasi Anda di localhost Anda, sebaiknya tinggalkan mode 'Dalam pengembangan'. Satu-satunya tantangan dengan mode ini adalah Anda tidak dapat meminta lebih dari

<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
1,
<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
2,
<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
3, dan
<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
4. Anda dapat mengakses ID Aplikasi dan Rahasia Aplikasi kapan saja dengan masuk ke Pengaturan >> Dasar

Buat Direktori Proyek

Buat direktori dan beri nama social_login atau apa pun yang Anda suka. Di dalam direktori, buat dua folder baru dan beri nama

<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
5 dan
<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
6. Buat folder lain di dalam direktori root dan beri nama
<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
7

Untuk mengunduh SDK grafik Facebook yang diperlukan untuk autentikasi pengguna kami, navigasikan ke facebook-login-client dari terminal Anda dan jalankan perintah di bawah ini;

<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
_8

Siapkan Database dengan MySQL

Buat database dan beri nama social_systems. Sebelum membuat tabel untuk data profil pengguna Facebook, perlu diingat bahwa aplikasi dalam mode pengembangan tidak dapat meminta gambar profil pengguna. Oleh karena itu, kami harus menyetel nilai default avatar John Doe/Jane Doe di tabel kami untuk mengganti gambar profil yang tidak dapat kami akses

Jalankan perintah SQL yang Anda miliki di bawah ini di konsol MySQL Anda

/** MySQL console*/
USE social_systems;
CREATE TABLE facebook_users (
  id int(11) NOT NULL AUTO_INCREMENT,
  facebook_id varchar(255) NOT NULL,
  name varchar(150) NOT NULL,
  email varchar(150) NOT NULL,
  profile_image text DEFAULT 'https://images.opencollective.com/jane-doe/avatar/256.png',
  primary key (id),
  unique key facebook_id (facebook_id)
);
_

Implementasi Kode

Ada jalur file untuk menunjukkan file di mana setiap cuplikan kode harus ditempatkan, dan di mana setiap file harus ditempatkan di folder yang berbeda

config-files/config. php

<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');

config-files/Database. php

<?php
// Include configuration file
require_once('config.php');

class Database {
  // Define database parameters
  private $db_host = DB_HOST;
  private $db_name = DB_NAME;
  private $username = DB_USERNAME;
  private $password = DB_PASSWORD;
  private $cnxn;

  // Connect to database
  public function connect() {
    $this->cnxn = new mysqli($this->db_host, $this->username, $this->password, $this->db_name);
    if($this->cnxn->connect_error) {
      die('Cannot connect to database: &#37;s'. $this->cnxn->connect_error);
    }
    return $this->cnxn;
  }

  public function disconnectDB() {
    $this->cnxn = null;
  }
}

pengguna/Pengguna. php

<?php
class User {
  // Database related data
  private $cxn;
  private $facebook_account_table = 'facebook_users';

  // Facebook User Properties
  public $id;
  public $name;
  public $email;
  public $profile_image;
  public $facebook_id;

  // Define a constructor
  public function __construct($connect_db) {
    $this->cxn = $connect_db;
  }

  // Facebook Login
  public function facebook_login($fbdata = array()) {
    if(!empty($fbdata)){
      $this->facebook_id = $this->cxn->real_escape_string($fbdata['facebook_id']);
      $this->name = $this->cxn->real_escape_string($fbdata['name']);
      $this->email = $this->cxn->real_escape_string($fbdata['email']);

      $fbUser = "SELECT `facebook_id` FROM " . $this->facebook_account_table . " WHERE facebook_id = '".$this->facebook_id."'";
      $fbUserResult = $this->cxn->query($fbUser);

      if($fbUserResult->num_rows > 0) {
        // return $execute_get_user->fetch_assoc();
        $fbUserUpdate = "UPDATE " . $this->facebook_account_table . " SET name = '" . $this->name ."' AND email = '" . $this->email ."'";
        $updatedFbUserResult = $this->cxn->query($fbUserUpdate);
      } else {
        // Add user to the database
        $this->facebook_id = $this->cxn->real_escape_string($fbdata['facebook_id']);
        $this->name = $this->cxn->real_escape_string($fbdata['name']);
        $this->email = $this->cxn->real_escape_string($fbdata['email']);

        $newFbUser = "INSERT INTO ". $this->facebook_account_table . " (`facebook_id`, `name`, `email`) VALUES('" . $this->facebook_id. "','" . $this->name. "','" . $this->email . "')";
        $newFbUserResult = $this->cxn->query($newFbUser);
      }
    } else {
      header('Location: errorpage.php');
      exit();
    }
    return $fbUserResult->fetch_assoc();
  }
}

facebook-login-client/googlelogin. php

<?php

require_once('vendor/autoload.php');
require_once('users/User.php');
require_once('config-files/Database.php');

$database = new Database();
$connection = $database->connect();

$fbUser = new User($connection);

// Facebook API Library
use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;

$fb = new Facebook(
    array(
      'app_id' => FACEBOOK_APP_ID,
      'app_secret' => FACEBOOK_APP_SECRET,
      'default_graph_version' => 'v3.2',
      )
    );

// The redirect login helper
$helper = $fb->getRedirectLoginHelper();

try {
  if(isset($_SESSION['access_token'])) {
    $accessToken = $_SESSION['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();
}

if(isset($_GET['code'])) {
  if(isset($accessToken)) {
    if(isset($_SESSION['access_token'])) {
      $fb->setDefaultAccessToken($_SESSION['access_token']);
    } else {
      $_SESSION['access_token'] = (string) $accessToken;
      $getClient = $fb->getOAuth2Client();
      $longAccessToken = $getClient->getLongLivedAccessToken($_SESSION['access_token']);
      $_SESSION['access_token'] = (string) $longAccessToken;
      $fb->setDefaultAccessToken($_SESSION['access_token']);

      // Get user profile data from Facebook
      try {
        $graphResponse = $fb->get('/me?fields=name,email');
        $userProfile = $graphResponse->getGraphUser();
      } catch(FacebookResponseException $e) {
        echo 'Graph returned an error: ' . $e->getMessage();
        session_destroy();
        header("Location: errorpage.php");
        exit;
      } catch(FacebookSDKException $e) {
        echo 'Facebook SDK returned an error: ' . $e->getMessage();
        exit;
      }

      $user_data = array();
      $user_data['facebook_id'] = !empty($userProfile['id']) ? $userProfile['id'] : '';
      $user_data['name'] = !empty($userProfile['name']) ? $userProfile['name'] : '';
      $user_data['email'] = !empty($userProfile['email']) ? $userProfile['email'] : '';

      $result = $fbUser->facebook_login($user_data);
      if($result) {
        extract($result);
        $_SESSION['facebook_user_id'] = $facebook_id;
        header('location: index.php');
        exit();
      }
    }
  } else {
    header('Location: errorpage.php');
    exit();
  }
} else {
  // Get login permission
  $permissions = ['email'];
  $facebookAuthUrl = $helper->getLoginUrl(FACEBOOK_REDIRECT_URL, $permissions);
  // Render Facebook login button
  $facebookButton = '<button><a href="'.htmlspecialchars($facebookAuthUrl).'" id="facebook" name="facebook">Login with Facebook</a></button>';
}

Lihat beberapa hal yang terjadi di facebook-login-client/googlelogin. file php

use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;

File-file ini disertakan dalam file untuk mengizinkan akses ke SDK Facebook dan penangan pengecualiannya. Kami membuat instance kelas Facebook di $fb, dan menggunakannya untuk mengakses semua metode yang relevan. Pada akhirnya, kami menggunakan metode

<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
9 dan
<?php
// Include configuration file
require_once('config.php');

class Database {
  // Define database parameters
  private $db_host = DB_HOST;
  private $db_name = DB_NAME;
  private $username = DB_USERNAME;
  private $password = DB_PASSWORD;
  private $cnxn;

  // Connect to database
  public function connect() {
    $this->cnxn = new mysqli($this->db_host, $this->username, $this->password, $this->db_name);
    if($this->cnxn->connect_error) {
      die('Cannot connect to database: &#37;s'. $this->cnxn->connect_error);
    }
    return $this->cnxn;
  }

  public function disconnectDB() {
    $this->cnxn = null;
  }
}
0 untuk mengambil informasi profil pengguna dan melanjutkan untuk menyimpannya ke database melalui objek kelas Pengguna

pengguna/data facebook. php

<?php
require_once('facebook-login-client/facebooklogin.php');
require_once('users/User.php');
require_once('config-files/Database.php');

$database = new Database();
$connection = $database->connect();

$fb_id = $_SESSION['facebook_user_id'];

$user_data = "SELECT * FROM `fb_users` WHERE `facebook_id` = '$fb_id'";
$query_user_data = $connection->query($user_data);

if($query_user_data->num_rows > 0) {
  $result_object = $query_user_data->fetch_assoc();
} else {
  header('Location: logout.php');
  exit();
}

loginform. php

<?php
session_start();
require_once('facebook-login-client/facebooklogin.php');
?>
<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    .btn-group button {
      background-color: #ffffff;
      border: 1px solid brown;
      padding: 10px 24px;
      cursor: pointer;
      float: left;
    }

    #google {color: red;}
    #facebook {color: blue}
    #twitter {color: lightblue}

    a {text-decoration: none;}

    /* Clear floats (clearfix hack) */
    .btn-group:after {
      content: "";
      clear: both;
      display: table;
    }

    .btn-group button:not(:last-child) {
      border-right: none; /* Prevent double borders */
    }

    /* Add a background color on hover */
    .btn-group button:hover {
      background-color: seashell;
    }
  </style>
</head>
<body>
  <h2>Social Login Button</var></h2>
  <p>&nbsp;</p>
  <div class="btn-group">
    <?php echo $facebookButton; ?>
  </div>
</body>
</html>

indeks. php

<?php
session_start();
if(isset($_SESSION['facebook_user_id'])) {
  require_once('users/facebookdata.php');
} else {
  header('Location: loginform.php');
  exit();
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <style>
    body, html {
      height: 100%;
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }

    .hero-image {
      background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url("https://iso.500px.com/wp-content/uploads/2014/07/big-one.jpg");
      height: 50%;
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
      position: relative;
    }

    .hero-text {
      text-align: center;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      color: white;
    }

    .hero-text button {
      border: none;
      outline: 0;
      display: inline-block;
      padding: 10px 25px;
      color: black;
      background-color: #ddd;
      text-align: center;
      cursor: pointer;
    }

    .hero-text button:hover {
      background-color: #555;
      color: white;
    }

    .avatar {
      vertical-align: middle;
      width: 80px;
      height: 80px;
      border-radius: 50%;
    }
  </style>
</head>
<body>

  <div class="hero-image">
    <div class="hero-text">
      <h1 style="font-size:50px">I am <?php echo $result_object['name']; ?></h1>

      <?php if(isset($result_object['email'])){ ?>
        <p>My email is <?php echo $result_object['email']; ?></p>
      <?php }?>

      <img src="<?php echo $result_object['profile_image']; ?>" alt="<?php echo $result_object['name']; ?>" class="avatar">
    </div>
  </div>
  <a href="logout.php">Logout..</a>
</body>
</html>

keluar. php

<?php
// Initialize the session.
if(!session_id()){
    session_start();
}

// Remove user data from session
unset($_SESSION['facebook_user_id']);

// Finally, destroy the session.
session_destroy();
header("Location: loginform.php");
exit();

halaman kesalahan. php

<?php
/*
 * Basic Site Settings and API Configuration
 */
// Database configuration
define('DB_HOST', 'localhost');
define('DB_USERNAME', '[YOUR USERNAME]');
define('DB_PASSWORD', '[YOUR PASSWORD, IF ANY]');
define('DB_NAME', '[YOUR DATABASE NAME]');

// Google API configuration
define('FACEBOOK_CLIENT_ID', '[YOUR ID]');
define('FACEBOOK_CLIENT_SECRET', '[YOUR SECRET]');
define('FACEBOOK_REDIRECT_URL', 'http://localhost/social_login/index.php');
0

Kesimpulan

Tidak mungkin menggunakan ID Aplikasi dan Rahasia aplikasi Facebook yang sudah dalam mode "Langsung" untuk menguji kode Anda di localhost. Facebook secara praktis menolak setiap URI Pengalihan tidak aman yang memiliki HTTP, bukan HTTPS

Bagaimana cara mengintegrasikan login FB saya ke situs web saya?

Mencari sesuatu untuk membuat hidup Anda lebih mudah? .
Masukkan URL situs web Anda
Salin SDK Facebook Anda untuk JavaScript. Ini adalah kode dasar untuk Facebook Login. .
Jalankan tes untuk melihat apakah ada orang yang masuk ke situs web Anda melalui Facebook
Kustomisasi tombol login Anda dan terima kode yang dipersonalisasi untuk dimasukkan ke situs web Anda

Apakah PHP masih digunakan di Facebook?

1. Facebook . Hal ini menyebabkan efek domino, dan sekarang sejumlah besar perusahaan teknologi masa kini juga menggunakan PHP .

Bagaimana menambahkan Facebook SDK di PHP?

SDK Facebook PHP sangat mudah diimplementasikan dan memungkinkan akses ke API grafik facebook untuk pengembang. catatan untuk digunakan dalam kode PHP. Buat aplikasi baru dengan mengeklik Tambahkan Aplikasi Baru. Masukkan semua detail yang diperlukan seperti nama, id email dan klik Buat ID APP untuk mendapatkan ID APP dan RAHASIA APLIKASI untuk mengakses API Facebook .