Untuk melakukan login menggunakan Facebook di CodeIgniter
phpUntuk 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
<?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']; // optional
$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) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
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;
}
// Logged in
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());
// The OAuth 2.0 client handler helps us manage access tokens
$oAuth2Client = $fb->getOAuth2Client();
// Get the access token metadata from /debug_token
$tokenMetadata = $oAuth2Client->debugToken(
$accessToken);
php
echo '<h3>Metadata</h3>';
var_dump($tokenMetadata);
// Validation (these will throw FacebookSDKException's when they fail)
$tokenMetadata->validateAppId('{your-app-id}'); // Replace {your-app-id} with your App ID
// If you know the user ID this access token belongs to, you can validate it here
//$tokenMetadata->validateUserId('123');
$tokenMetadata->validateExpiration();
if (! $accessToken->isLongLived()) {
// Exchanges a short-lived access token for a long-lived one
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) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
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>';
// Simpan data pengguna ke dalam database
$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 ke halaman dashboard
redirect('dashboard');
}
}
sql
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>php
<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:
less
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;
python
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.
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
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function index()
{
$this->load->library('session');
// Cek apakah pengguna sudah login
if (! $this->session->userdata('user_id')) {
redirect('login');
}
// Ambil data pengguna dari database
$this->load->database();
$this->db->where('id', $this->session->userdata('user_id'));
$query = $this->db->get('users');
$user = $query->row();
// Tampilkan halaman dashboard
$this->load->view('dashboard', array('user' => $user));
}
}
Berikut contoh kode untuk view "dashboard.php":
html
<!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.
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
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Dashboard extends CI_Controller {
public function index()
{
$this->load->library('session');
// Cek apakah pengguna sudah login
if (! $this->session->userdata('user_id')) {
redirect('login');
}
// Ambil data pengguna dari database
$this->load->database();
$this->db->where('id', $this->session->userdata('user_id'));
$query = $this->db->get('users');
$user = $query->row();
// Tampilkan halaman dashboard
$this->load->view('dashboard', array('user' => $user));
}
}
Berikut contoh kode untuk view "dashboard.php":
html
<!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.