Pembuatan Login dengan Laravel Socialite

Hai kreatif readers, kali ini saya akan membahas mengenai laravel socialite yang digunakan pada proses login.

Apa itu Laravel Socialite?

Laravel socialite adalah package laravel yang memudahkan penerapan SSO dengan melakukan integrasi autentikasi menggunakan berbagai sosial media. Dengan penggunaan package ini memudahkan pengguna ketika login ke dalam aplikasi dengan salah satu akun sosial media yang telah dimilikinya, sehingga pengguna tidak perlu mengingat banyak akun (username dan password).

Fitur pada Laravel Socialite

  • OAuth Authentication, memanfaatkan protokol OAuth yang aman untuk otentikasi pengguna. Komunikasi antara aplikasi dan platform sosial media dienkripsi untuk melindungi kredensial pengguna dan tidak memaparkannya ke aplikasi. Dengan alur otentikasi ini, memastikan keamanan data pengguna terlindungi.
  • Simple Integration, Laravel Socialite menyediakan API yang mudah diimplementasi pada proses login. Antarmuka sederhana memudahkan tim pengembang untuk melakukan konfigurasi proses autentikasi tanpa harus menulis kode yang rumit.
  • Multiple Provides, Laravel Socialite mendukung berbagai sosial media dan penyedia OAuth, seperti Facebook, Twitter, Google, GitHub, LinkedIn, Yahoo, dan lain sebagainya. Untuk itu aplikasi dapat menyediakan beberapa pilihan login dengan sosial media.

Langkah-langkah Penggunaan Laravel Socialite

Berikut ini akan dijelaskan beberapa langkah penggunaan Laravel Socialite dan metode-metode yang ada pada Laravel Socialite:

A. Installasi dan Konfigurasi

1. Pertama-tama, tentukan penyedia OAuth yang akan digunakan. Selanjutnya dapatkan kredensial dari penyedia, untuk nantinya disimpan pada konfigurasi Laravel Socialite.

2. Install package laravel socialite melalui composer:

composer require laravel/socialite

3. Lanjut pada bagian konfigurasi, pafa file ‘config/services.php’ tambahkan konfigurasi kredensial menggunakan key yang telah didapatkan dari penyedia, seperti berikut ini:

'github' => [
 'client_id' => env('GITHUB_CLIENT_ID'),
 'client_secret' => env('GITHUB_CLIENT_SECRET'),
 'redirect' => 'http://example.com/callback-url',
],

4. Lanjut pada bagian konfigurasi, pafa file ‘config/services.php’ tambahkan konfigurasi kredensial menggunakan key yang telah didapatkan dari penyedia, seperti berikut ini:

'github' => [
 'client_id' => env('GITHUB_CLIENT_ID'),
 'client_secret' => env('GITHUB_CLIENT_SECRET'),
 'redirect' => 'http://example.com/callback-url',
],

B. Autentikasi

1. Lakukan 2 kali routing yaitu untuk redirecting user ke OAuth provider, dan untuk receiving callback dari provider setelah proses autentikasi. Berikut contoh routes authentication:

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
});

2. Setelah data pengguna diambil dari OAuth provider, tentukan apakah pengguna tersebut ada di database aplikasi lalu otentikasi pengguna tersebut.

use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/callback', function () {
 $githubUser = Socialite::driver('github')->user();
 
 $user = User::updateOrCreate([
 'github_id' => $githubUser->id,
 ], [
 'name' => $githubUser->name,
 'email' => $githubUser->email,
 'github_token' => $githubUser->token,
 'github_refresh_token' => $githubUser->refreshToken,
 ]);
 
 Auth::login($user);
 
 return redirect('/dashboard');
});

3. Atur scopes untuk menentukan hak akses pengguna menggunakan scopes metode seperti berikut:

use Laravel\Socialite\Facades\Socialite;
 
return Socialite::driver('github')
 ->scopes(['read:user', 'public_repo'])
 ->redirect();

C. Retrieving User Details

Setelah pengguna dialihkan kembali ke autentikasi  pada aplikasi, maka data detail pengguna yang dibawa dapat dialmbil menggunakan metode user. Objek yang dikembalikan dengan metode user tersebut terdiri dari berbagai property dan method  mengenai informasi detail data pengguna, yang dapat disimpan pada database aplikasi. Berikut contoh detail data pengguna yang dikembalikan ke aplikasi dari penyedia OAuth:

use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/callback', function () {
 $user = Socialite::driver('github')->user();
 
 // OAuth 2.0 providers...
 $token = $user->token;
 $refreshToken = $user->refreshToken;
 $expiresIn = $user->expiresIn;
 
 // OAuth 1.0 providers...
 $token = $user->token;
 $tokenSecret = $user->tokenSecret;
 
 // All providers...
 $user->getId();
 $user->getNickname();
 $user->getName();
 $user->getEmail();
 $user->getAvatar();
});

Kesimpulan

Penggunaan Laravel Socialite ini bermanfaat untuk digunakan pada aplikasi yang menargetkan banyak pengguna dengan kriteria pengguna umum, terutama untuk para pengguna yang tidak ingin membuat akun baru. Pengguna dapat masuk ke aplikasi  dengan akun media sosial yang telah dimiliki. Hal ini tentunya bisa mempersingkat proses login ataupun registrasi pengguna, dan dapat meningkatkan pengalaman bagi pengguna. Namun, penting untuk mempertimbangkan penggunaan package ini sesuai kebutuhan spesifikasi aplikasi yang sedang dibangun.

Referensi:
Upadhyay, Mayur. Laravel Socialite for Social Media Authentication: A Comprehensive Guide. 2024. WPWEB IFOTECH.
Laravel.com