Halo semuanya, kembali lagi di tulisan saya. Baiklah pada kesempatan kali ini kita akan belajar bagaimana cara menerapkan login google pada project laravel. Bagaimana cara membuatnya?, ayo ikuti tutorialnya berikut ini.
Google sign-in adalah fitur yang sangat populer digunakan oleh banyak aplikasi untuk melakukan pendaftaran dan masuk ke dalam sebuah sistem. Dengan menggunakan fitur ini, user akan lebih mudah masuk karena mereka hanya butuh menekan tombol sign-in/sign-up untuk bisa mendapatkan autentikasi ke dalam sistem.
Dari sisi keamanan, password user tidak akan tersimpan di dalam sistem, karena autentikasi akan dilakukan oleh google. Data yang bisa disimpan hanya email, foto, nama, platform login, dan data publik lainnya. Adapun password tidak akan tersimpan dan tidak akan bisa diambil datanya dari pihak selain google
Dari sisi UX flownya menjadi lebih simpel, dan dari sisi kemanan password user terjamin dan autentikasi dilakukan oleh google.
Pada tutorial kali ini, kita akan menggunakan library socialite dengan laravel versi 7. Socialite adalah salah satu library yang didukung oleh laravel dan dapat digunakan untuk membuat fitur login google, faceook, github, twitter, dll.
📰 1. Cara Cepat Membuat Back-end Restful API Tanpa Coding dengan Typicode Json Server read more |
📰 2. Cara Menggunakan Library Datatable Serverside di Laravel Moodle read more |
📰 3. Cara Membuat Import Data Excel ke Database Mysql dengan php read more |
📰 4. Cara Membuat Peta Digital dengan Leafletjs, Alternatif Peta Digital tanpa Google Maps API read more |
Cara Membuat Fitur Login Google di Laravel
Pembahasan kali ini akan sedikit panjang, itu karena saya menyertakan cara instalasi dan membuat laravel auth juga. Jika kalian sudah bisa install dan membuat laravel auth sendiri, silahkan skip step pertama dan langsung masuk ke step kedua.
1. Instalasi Laravel dan Membuat Laravel Auth
1.1 Download dan install laravel 7 dengan menjalankan perintah di bawah ini menggunakan cmd atau terminal. Untuk lokasi folder bebas kalian tentukan sendiri.
composer create-project
Note: Syarat mendownload laravel adalah sudah menginstall composer di komputer kalian. Silahkan download dan install composer seperti aplikasi pada umumnya.
1.2 Buatlah database baru dengan nama laravel di phpmyadmin, Laravel adalah nama default database yang disediakan oleh laravel saat diinstall pertama kali. Jika kalian menginginkan nama lain, silahkan ubah juga nama database di dalam file .env
1.3 Selanjtunya, kita akan membuat autentikasi laravel. Laravel menyediakan autentikasi yang lengkap mulai dari login, registrasi, reset password, hingga multi level user. Dan cara membuatnya juga mudah sekali. Silahkan jalankan perintah di bawah ini secara bergantian.
Lalu jalankan perintah di bawah ini untuk membuat folder dan file auth, seperti login, registrasi, reset password, dsb.
Lalu download depedensi vuejs dengan menjalankan perintah di bawah ini
Lalu jalankan perintah di bawah ini untuk mengcompile javascript ke dalam project laravel
1.4. Selanjutnya jalankan perintah migrate di bawah ini untuk membuat tabel users dan tabel-tabel lainnya di dalam database
Jika semua step berhasil dikerjakan, maka hasilnya akan tampak seperti gambar di bawah ini. Terdapat tombol login dan register yang bisa kalian coba. Lakukan pendaftaran pertama kalian dan login ke dalam sistem.
|
Instalasi laravel dan laravel auth |
2. Mendapatkan Client Id dan Client Secret pada Google
2.1 Untuk mendapatkan client id dan client secret. Kalian perlu mendaftar dan melakukan sedikit setting di laman berikut ini
https://console.cloud.google.com. Setelah laman terbuka, silahkan buat project terlebih dahulu, ikuti instruksinya seperti gambar di bawah ini.
|
Membuat project baru (1) |
2.2 Lalu tentukan nama project kalian, untuk location biarkan apa adanya. Jika sudah, klik tombol create untuk membuat project baru.
|
Membuat project baru (2) |
Note: setelah project berhasil dibuat, pastikan juga kalian berada di dalam project yang baru dibuat tersebut. Cara untuk memilih project adalah : klik nama project yang berada di sebelah kanan google cloud platform. Lalu klik panah bawah untuk memilih project.
2.3 Setalah pojerct selesai dibuat, Selanjutnya klik menu OAuth consent screen, selanjutnya pilih external dan klik tombol create.
|
Membuat OAuth consent screen (1) |
2.4 Selanjutnya isi form yang bertanda wajib saja sperti app name dan user support email, jika sudah klik save dan continue untuk melanjutkan.
|
Membuat OAuth consent screen (2) |
2.5 Selanjutnya buka menu credentials → create credentials → OAuth Client ID.
|
Membuat credentials (1) |
2.6 Pilih web application pada application type, lalu scroll ke bawah dan klik add uri lalu tambahkan url baru. Sesuaikan url dengan aplikasi yang kalian buat. Jika menggunakan lokal maka isi dengan http://127.0.0.1:8000/auth/callback dan jika sudah dipublish silahkan isi dengan http://nama_domain/auth/callback. Lalu klik create.
|
Membuat credentials |
2.7 Selanjutnya kalian akan diberikan client id dan client secret. Silahakan copy client id dan client secret yang telah diberikan. Tapi jika kalian terlanjur menutup popup yang muncul, kalian bisa melihatnya kembali dengan meng-klik icon pensil yang berada di sebelah kanan dekat dengan icon tong sampah.
|
Copy client id dan client secret yang diberikan |
2.8 Buka project kalian kembali, dan buka file .env lalu tambahkan client id, client secret dan uri seperti gambar di bawah ini.
|
Setting file .env |
3. Instalasi dan Setting Library Socialite
3.1 Buka cmd atau terminal kalian, dan pastikan kalian berada di dalam folder project. Selanjutnya jalankan perintah di bawah ini untuk mengunduh library socialite.
3.2 Lalu buka file services.php di dalam folder config. Lalu tambahkan script di bawah ini di dalam fungsi return [ ..... ].
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
.....
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_APP_SECRET'),
'redirect' => env('GOOGLE_REDIRECT'),
],
];
4. Membut Tombol Sign-in Google pada View
Silahkan buka file login.blade.php di dalam folder views/resources/auth. Lalu tambahkan script yang saya tandai dengan komentar di bawah ini, di bawah tombol login.
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
<!-- tambahkan script di bawah ini untuk membuat tombol signin google -->
<a class="btn btn-danger" href="{{ '/auth/redirect'}}">google</a>
@if (Route::has('password.request'))
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
5. Setting LoginController
Buka file loginController.php di dalam folder app/Http/Controller/Auth, lalu tambahkan script yang saya tandai dengan komentar di bawah ini ke dalam file loginController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Laravel\Socialite\Facades\Socialite;
use App\User;
class LoginController extends Controller
{
.........
//tambahkan script di bawah ini
public function redirectToProvider()
{
return Socialite::driver('google')->redirect();
}
//tambahkan script di bawah ini
public function handleProviderCallback(\Request $request)
{
try {
$user_google = Socialite::driver('google')->user();
$user = User::where('email', $user_google->getEmail())->first();
if($user != null){
\auth()->login($user, true);
return redirect()->route('home');
}else{
$create = User::Create([
'email' => $user_google->getEmail(),
'name' => $user_google->getName(),
'password' => 0,
'email_verified_at' => now()
]);
\auth()->login($create, true);
return redirect()->route('home');
}
} catch (\Exception $e) {
return redirect()->route('login');
}
}
}
6. Menambah Routing
Langkah terakhir, silahkan buka file web.php di dalam folder routes lalu tambahkan script di bawah ini ke dalam file tersebut.
Route::get('/auth/redirect', 'Auth\LoginController@redirectToProvider');
Route::get('/auth/callback', 'Auth\LoginController@handleProviderCallback');
Sekarang saatnya kita melakukan uji coba. Jalankan perintah php artisan serve. Dan hasilnya akan tampak seperti gambar gif di bawah ini.
|
Tampilan login google |
Sekian tutorial cara membuat fitur login google di laravel. Semoga tulisan singkat ini jelas dan mudah dipahami oleh kalian semua. Jika ada kendala, silahkan tanya langsung di kolom komentar di bawah ini. Silahkan juga memberikan masukan yang membangun bagi saya :). Sampai jumpa di tutorial keran lainnya.
Posting Komentar