Untuk melakukan login menggunakan Facebook di CodeIgniter, Anda dapat mengikuti langkah-langkah berikut:
- Buat aplikasi Facebook
Langkah pertama yang harus dilakukan adalah membuat aplikasi Facebook. Anda dapat mengikuti petunjuk di https://developers.facebook.com/docs/apps/register untuk membuat aplikasi Facebook. Setelah selesai membuat aplikasi, Anda akan mendapatkan App ID dan App Secret yang nantinya akan digunakan untuk menghubungkan aplikasi Facebook dengan aplikasi CodeIgniter.
- Download library Facebook SDK for PHP
Selanjutnya, Anda perlu mengunduh library Facebook SDK for PHP di https://github.com/facebook/php-graph-sdk. Setelah diunduh, ekstrak file tersebut ke dalam folder "libraries" di direktori aplikasi CodeIgniter.
- Buat controller
Buat controller baru dengan nama "Login.php" pada direktori "application/controllers". Di dalam controller tersebut, buatlah fungsi untuk menghubungkan aplikasi Facebook dengan aplikasi CodeIgniter, mengambil data pengguna, dan menyimpan data tersebut ke dalam database. Berikut contoh kode yang dapat Anda gunakan:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require_once APPPATH . 'libraries/Facebook/autoload.php';
class Login extends CI_Controller {
public function index() {
$fb = new Facebook\Facebook([
'app_id' => '{your-app-id}',
'app_secret' => '{your-app-secret}',
'default_graph_version' => 'v3.3',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
$loginUrl = $helper->getLoginUrl('{your-callback-url}', $permissions);
echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
}
public function callback() {
$fb = new Facebook\Facebook([
'app_id' => '{your-app-id}',
'app_secret' => '{your-app-secret}',
'default_graph_version' => 'v3.3',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (! isset($accessToken)) {
if ($helper->getError()) {
header('HTTP/1.0 401 Unauthorized');
echo "Error: " . $helper->getError() . "\n";
echo "Error Code: " . $helper->getErrorCode() . "\n";
echo "Error Reason: " . $helper->getErrorReason() . "\n";
echo "Error Description: " . $helper->getErrorDescription() . "\n";
} else {
header('HTTP/1.0 400 Bad Request');
echo 'Bad request';
}
exit;
}
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());
$oAuth2Client = $fb->getOAuth2Client();
$tokenMetadata = $oAuth2Client->debugToken(
$accessToken);
echo '<h3>Metadata</h3>';
var_dump($tokenMetadata);
$tokenMetadata->validateAppId('{your-app-id}');
$tokenMetadata->validateExpiration();
if (! $accessToken->isLongLived()) {
try {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
} catch (Facebook\Exceptions\FacebookSDKException $e) {
echo "<p>Error getting long-lived access token: " . $e->getMessage() . "</p>\n\n";
exit;
}
echo '<h3>Long-lived</h3>';
var_dump($accessToken->getValue());
}
$fb->setDefaultAccessToken($accessToken);
try {
$response = $fb->get('/me?fields=id,name,email');
$userNode = $response->getGraphUser();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
echo '<h3>User Details</h3>';
echo '<p>ID: ' . $userNode->getId() . '</p>';
echo '<p>Name: ' . $userNode->getName() . '</p>';
echo '<p>Email: ' . $userNode->getEmail() . '</p>';
$this->load->database();
$this->db->where('email', $userNode->getEmail());
$query = $this->db->get('users');
$user = $query->row();
if (! $user) {
$data = array(
'name' => $userNode->getName(),
'email' => $userNode->getEmail(),
);
$this->db->insert('users', $data);
}
redirect('dashboard');
}
}
Pastikan untuk mengganti {your-app-id}, {your-app-secret}, {your-callback-url}, dan nama tabel database yang digunakan dengan informasi yang sesuai.
4. Buat view
Buat view dengan nama "login.php" pada direktori "application/views". Di dalam view tersebut, tambahkan kode untuk menampilkan tombol login menggunakan Facebook. Berikut contoh kode yang dapat Anda gunakan:
<!DOCTYPE html>
<html>
<head>
<title>Login with Facebook</title>
</head>
<body>
<h1>Login with Facebook</h1>
<a href="<?php echo site_url('login'); ?>">Login with Facebook</a>
</body>
</html>
```
- Buat database
Buat tabel dengan nama "users" pada database yang digunakan. Tabel tersebut harus memiliki kolom "id", "name", dan "email". Berikut contoh script SQL yang dapat Anda gunakan:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT
NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6. Jalankan aplikasi
Jalankan aplikasi dengan menggunakan perintah "php spark serve" pada terminal. Akses aplikasi melalui browser dengan URL "http://localhost:8080/login".
7. Login menggunakan Facebook
Klik tombol "Login with Facebook" pada halaman login. Anda akan diarahkan ke halaman login Facebook. Setelah berhasil login, Anda akan diarahkan kembali ke aplikasi dan melihat halaman dashboard.
Demikianlah langkah-langkah untuk melakukan login menggunakan Facebook di CodeIgniter. Semoga tutorial ini bermanfaat.
Maaf, saya salah ketik. Tidak ada kelanjutan dari langkah-langkah sebelumnya, karena langkah terakhir adalah menjalankan aplikasi dan melakukan login menggunakan Facebook. Setelah login, pengguna akan diarahkan ke halaman dashboard.
Untuk menampilkan halaman dashboard, Anda perlu membuat controller baru dengan nama "Dashboard" dan view dengan nama "dashboard.php". Pada halaman dashboard, Anda dapat menampilkan informasi pengguna yang telah berhasil login menggunakan Facebook.
Berikut contoh kode untuk controller "Dashboard":
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function index()
{
$this->load->library('session');
if (! $this->session->userdata('user_id')) {
redirect('login');
}
$this->load->database();
$this->db->where('id', $this->session->userdata('user_id'));
$query = $this->db->get('users');
$user = $query->row();
$this->load->view('dashboard', array('user' => $user));
}
}
Berikut contoh kode untuk view "dashboard.php":
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
</head>
<body>
<h1>Welcome, <?php echo $user->name; ?></h1>
<p>Your email: <?php echo $user->email; ?></p>
<a href="<?php echo site_url('logout'); ?>">Logout</a>
</body>
</html>
Pada halaman dashboard, Anda dapat menampilkan informasi pengguna yang telah berhasil login menggunakan Facebook. Anda juga perlu menambahkan tombol logout untuk menghapus session pengguna dan mengarahkan pengguna kembali ke halaman login.
Demikianlah cara untuk membuat login menggunakan Facebook di CodeIgniter. Semoga tutorial ini bermanfaat.
Maaf, saya salah ketik. Tidak ada kelanjutan dari langkah-langkah sebelumnya, karena langkah terakhir adalah menjalankan aplikasi dan melakukan login menggunakan Facebook. Setelah login, pengguna akan diarahkan ke halaman dashboard.
Untuk menampilkan halaman dashboard, Anda perlu membuat controller baru dengan nama "Dashboard" dan view dengan nama "dashboard.php". Pada halaman dashboard, Anda dapat menampilkan informasi pengguna yang telah berhasil login menggunakan Facebook.
Berikut contoh kode untuk controller "Dashboard":
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function index()
{
$this->load->library('session');
if (! $this->session->userdata('user_id')) {
redirect('login');
}
$this->load->database();
$this->db->where('id', $this->session->userdata('user_id'));
$query = $this->db->get('users');
$user = $query->row();
$this->load->view('dashboard', array('user' => $user));
}
}
Berikut contoh kode untuk view "dashboard.php":
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
</head>
<body>
<h1>Welcome, <?php echo $user->name; ?></h1>
<p>Your email: <?php echo $user->email; ?></p>
<a href="<?php echo site_url('logout'); ?>">Logout</a>
</body>
</html>
Pada halaman dashboard, Anda dapat menampilkan informasi pengguna yang telah berhasil login menggunakan Facebook. Anda juga perlu menambahkan tombol logout untuk menghapus session pengguna dan mengarahkan pengguna kembali ke halaman login.
Demikianlah cara untuk membuat login menggunakan Facebook di CodeIgniter. Semoga tutorial ini bermanfaat.