Laravel Socialite adalah cara yang sederhana dan nyaman untuk melakukan autentikasi dengan penyedia OAuth. Saat ini, Socialite mendukung autentikasi melalui Facebook, Twitter, LinkedIn, Google, GitHub, GitLab, Bitbucket, dan Slack.
Instalasi
Untuk memulai dengan Socialite, gunakan manajer paket Composer untuk menambahkan paket ke dependensi proyek Anda:
composer require laravel/socialite
Konfigurasi
Sebelum menggunakan Socialite, Anda perlu menambahkan kredensial untuk penyedia OAuth yang digunakan aplikasi Anda. Biasanya, kredensial ini dapat diperoleh dengan membuat “aplikasi pengembang” dalam dashboard layanan yang akan Anda autentikasi.
Kredensial ini harus ditempatkan dalam file konfigurasi config/services.php aplikasi Anda, dan harus menggunakan kunci facebook, twitter (OAuth 1.0), twitter-oauth-2 (OAuth 2.0), linkedin-openid, google, github, gitlab, bitbucket, atau slack, tergantung pada penyedia yang dibutuhkan aplikasi.
Contoh konfigurasi untuk Github:
PHP
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => '[6](http://example.com/callback-url)',
],
Routing Autentikasi
Untuk mengautentikasi pengguna menggunakan penyedia OAuth, Anda memerlukan dua rute: satu untuk mengarahkan pengguna ke penyedia OAuth, dan satu lagi untuk menerima callback dari penyedia setelah autentikasi.
Berikut adalah contoh implementasi kedua rute tersebut:
PHP
use Laravel\Socialite\Facades\Socialite;
Route::get('/auth/redirect', function () {
return Socialite::driver('github')->redirect();
});
Route::get('/auth/callback', function () {
$user = Socialite::driver('github')->user();
// $user->token
});
Autentikasi & Penyimpanan
Setelah pengguna telah diambil dari penyedia OAuth, Anda dapat menentukan apakah pengguna ada di database aplikasi Anda dan mengautentikasi pengguna. Jika pengguna tidak ada di database aplikasi Anda, biasanya Anda akan membuat catatan baru di database Anda untuk mewakili pengguna.
Berikut adalah contoh bagaimana Anda bisa melakukannya:
PHP
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
Route::get('/auth/callback', function () {
$user = Socialite::driver('github')->user();
$user = User::firstOrCreate(
['github_id' => $user->getId()],
['name' => $user->getName(), 'email' => $user->getEmail()]
);
Auth::login($user, true);
return redirect('/home');
});
Dengan demikian, Anda telah berhasil mengimplementasikan Laravel Socialite dalam aplikasi yang telah dibuat.