Implementasi login dengan media sosial seperti Google, GitHub, atau Facebook melibatkan beberapa langkah dasar menggunakan OAuth 2.0. Berikut adalah contoh implementasi login dengan beberapa media sosial tersebut dalam satu skrip PHP menggunakan pustaka OAuth 2.0 PHP yang umum:
Install pustaka OAuth 2.0 PHP, seperti "league/oauth2-client", menggunakan Composer:
composer require league/oauth2-client
Buat file PHP untuk mengelola login dengan media sosial, sebagai contoh login_with_social.php:
<?php
require __DIR__.'/vendor/autoload.php';
use League\OAuth2\Client\Provider\Google;
use League\OAuth2\Client\Provider\Facebook;
use League\OAuth2\Client\Provider\GitHub;
session_start();
// Konfigurasi untuk Google
$googleClientId = 'YOUR_GOOGLE_CLIENT_ID';
$googleClientSecret = 'YOUR_GOOGLE_CLIENT_SECRET';
$googleRedirectUri = 'YOUR_GOOGLE_REDIRECT_URI';
// Konfigurasi untuk Facebook
$facebookClientId = 'YOUR_FACEBOOK_APP_ID';
$facebookClientSecret = 'YOUR_FACEBOOK_APP_SECRET';
$facebookRedirectUri = 'YOUR_FACEBOOK_REDIRECT_URI';
// Konfigurasi untuk GitHub
$githubClientId = 'YOUR_GITHUB_CLIENT_ID';
$githubClientSecret = 'YOUR_GITHUB_CLIENT_SECRET';
$githubRedirectUri = 'YOUR_GITHUB_REDIRECT_URI';
// Pilih penyedia OAuth sesuai dengan parameter 'provider'
if (isset($_GET['provider'])) {
$providerName = strtolower($_GET['provider']);
switch ($providerName) {
case 'google':
$provider = new Google([
'clientId' => $googleClientId,
'clientSecret' => $googleClientSecret,
'redirectUri' => $googleRedirectUri,
]);
break;
case 'facebook':
$provider = new Facebook([
'clientId' => $facebookClientId,
'clientSecret' => $facebookClientSecret,
'redirectUri' => $facebookRedirectUri,
'graphApiVersion' => 'v12.0',
]);
break;
case 'github':
$provider = new GitHub([
'clientId' => $githubClientId,
'clientSecret' => $githubClientSecret,
'redirectUri' => $githubRedirectUri,
]);
break;
default:
die('Invalid provider');
}
// Redirect ke OAuth untuk otorisasi
$authorizationUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authorizationUrl);
exit;
} elseif (isset($_GET['code'])) {
// Token pertukaran kode otorisasi dengan token akses
$providerName = strtolower($_GET['provider']);
$token = $provider->getAccessToken('authorization_code', ['code' => $_GET['code']]);
// Simpan token akses ke dalam session
$_SESSION['access_token'] = $token->getToken();
// Ambil informasi pengguna dari penyedia OAuth
$user = $provider->getResourceOwner($token);
// Tampilkan informasi pengguna
echo "Welcome, " . $user->getName() . "!<br>";
echo "Email: " . $user->getEmail();
} else {
die('Missing provider parameter');
}
Pastikan untuk mengganti nilai $googleClientId, $googleClientSecret, $googleRedirectUri, $facebookClientId, $facebookClientSecret, $facebookRedirectUri, $githubClientId, $githubClientSecret, dan $githubRedirectUri dengan nilai yang sesuai dari kredensial OAuth 2.0 Anda.
Jalankan skrip PHP melalui server web dan buka halaman login_with_social.php?provider=google, login_with_social.php?provider=facebook, atau login_with_social.php?provider=github untuk mencoba login dengan media sosial yang dipilih.
Pastikan untuk menangani kesalahan dan meningkatkan keamanan aplikasi Anda dalam pengaturan produksi. Juga, Anda dapat menyesuaikan skrip ini untuk mendukung penyedia OAuth 2.0 lainnya jika diperlukan.