Tutorial Login Dengan Google di Vue 3 #5 : Membuat Proses Logout


Tutorial Login Dengan Google di Vue 3 #5 : Membuat Proses Logout

Halo teman-teman semuanya, pada artikel sebelumnya kita telah berhasil menampilkan profile user yang sedang login menggunakan accessToken dan pada kesempatan kali ini, kita semua akan belajar membuat proses logout.

Langkah 1 - Membuat Proses Logout

Silahkan teman-teman buka file src/App.vue, kemudian ubah semua kode-nya menjadi seperti berikut ini.

<script setup>

//import ref and onMounted
import { ref, onMounted } from 'vue';

//import googleTokenLogin and googleLogout
import { googleTokenLogin, googleLogout } from 'vue3-google-login';

//import axios
import axios from 'axios';

//state accessToken
const accessToken = ref(localStorage.getItem('accessToken'));

//state profile
const profile = ref(JSON.parse(localStorage.getItem('profile')));

//function fetchUserProfile
const fetchUserProfile = async (token) => {
  try {
    const res = await axios.get('https://www.googleapis.com/oauth2/v1/userinfo', {
      headers: {
        Authorization: `Bearer ${token}`,
        Accept: 'application/json',
      },
      params: {
        access_token: token,
      },
    });

    //assign response to state profile
    profile.value = res.data;

    //store response to localStorage
    localStorage.setItem('profile', JSON.stringify(res.data));

  } catch (error) {
    console.error('Failed to fetch user profile:', error);
  }
};

onMounted(() => {
  if (accessToken.value && !profile.value) {
    fetchUserProfile(accessToken.value);
  }
});

const login = () => {
  googleTokenLogin().then((response) => {

    //set state accessToken
    accessToken.value = response.access_token;

    //store accessToken to localStorage
    localStorage.setItem('accessToken', accessToken.value);

  })
}

const handleLogout = () => {

  //call googleLogout
  googleLogout();

  //set state accessToken and profile to null
  profile.value = null;
  accessToken.value = null;

  //remove accessToken and profile from localStorage
  localStorage.removeItem('accessToken');
  localStorage.removeItem('profile');
};
</script>

<template>
  <div class="container mt-5">
    <div class="row justify-content-center">
      <div class="col-md-6">
        <div class="card border-0 rounded shadow-sm">
          <div class="card-header">
            <h5 class="card-title mb-0">Google Login with Vue 3</h5>
          </div>
          <div class="card-body">
            <div class="text-center">
              <div v-if="profile">
                <div class="text-center mb-3">
                  <img :src="profile.picture" class="rounded-circle bg-dark p-2 shadow" alt="User profile" />
                </div>
                <table class="table table-striped table-bordered">
                  <tbody>
                    <tr>
                      <td class="fw-bold">Full Name</td>
                      <td>{{ profile.name }}</td>
                    </tr>
                    <tr>
                      <td class="fw-bold">Email Address</td>
                      <td>{{ profile.email }}</td>
                    </tr>
                  </tbody>
                </table>
                <button class="btn btn-danger" @click="handleLogout">Log out</button>
              </div>
              <div v-else>
                <button class="btn btn-primary" @click="login">Login with Google</button>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<style scoped>
/* Add your styles here if needed */
</style>

Dari perubahan kode di atas, pertama kita import googleLogout.

//import googleTokenLogin and googleLogout
import { googleTokenLogin, googleLogout } from 'vue3-google-login';

Kemudian kita membuat function baru dengan nama handleLogout. Dimana fungsi ini akan dijalankan saat button logout diklik.

<button class="btn btn-danger" @click="handleLogout">Log out</button>
const handleLogout = () => {

	//...
	
}

Di dalam function di atas, pertama kita panggil googleLogout.

//call googleLogout
googleLogout();

Kemudian kita set state menjadi null.

//set state accessToken and profile to null
profile.value = null;
accessToken.value = null;

Dan terakhir, kita hapus data accessToken dan profile dari localStorage browser.

//remove token and profile from localStorage
localStorage.removeItem('accessToken');
localStorage.removeItem('profile');

Langkah 2 - Uji Coba Proses Logout

Sekarang silahkan reload project Vue-nya, jika berhasil maka akan menampilkan button logout.

Jika diklik, maka kita akan ditampilkan button Login with Google dan data yang ada di dalam localStorage browser juga akan dihapus.

Kesimpulan

Pada materi kali ini, kita semua telah belajar bagaimana cara membuat proses logout Google di Vue dan jika teman-teman ada kendala saat belajar, jangan sungkan-sungkan untuk bertanya melalui kolom komentar pada setiap artikel atau juga bisa melalui group Telegram milik SantriKoding.

Terima Kasih


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami