Pustaka ini memungkinkan Anda mengintegrasikan autentikasi Google dengan mulus ke dalam aplikasi Next.js Anda, menghilangkan kebutuhan untuk mengembangkannya dari awal.
Mengintegrasikan sistem autentikasi yang aman adalah langkah pengembangan penting yang tidak hanya menyediakan lingkungan yang aman bagi pengguna, tetapi juga menanamkan kepercayaan pada produk Anda. Sistem ini memastikan bahwa data mereka terlindungi dan hanya individu yang berwenang yang dapat mengakses aplikasi tersebut.
Membangun autentikasi yang aman dari bawah ke atas dapat menjadi proses yang memakan waktu yang membutuhkan ketelitian pemahaman tentang protokol dan proses autentikasi, terutama saat menangani autentikasi yang berbeda penyedia.
Menggunakan NextAuth, Anda dapat mengalihkan fokus untuk membangun fitur inti. Baca terus untuk mengetahui cara mengintegrasikan login sosial Google di aplikasi Anda menggunakan NextAuth.
Bagaimana NextAuth Bekerja
NextAuth.js adalah pustaka autentikasi sumber terbuka yang menyederhanakan proses penambahan
otentikasi dan otorisasi fungsionalitas untuk aplikasi Next.js serta menyesuaikan alur kerja autentikasi. Ini menyediakan berbagai fitur seperti email, autentikasi tanpa kata sandi, dan dukungan untuk berbagai penyedia autentikasi seperti Google, GitHub, dan lainnya.Pada level tinggi, NextAuth bertindak sebagai middleware, memfasilitasi proses autentikasi antara aplikasi Anda dan penyedia. Di balik layar, saat pengguna mencoba masuk, mereka dialihkan ke halaman masuk Google. Setelah autentikasi berhasil, Google mengembalikan payload yang menyertakan data pengguna, seperti nama dan alamat email mereka. Data ini digunakan untuk mengotorisasi akses ke aplikasi dan sumber dayanya.
Menggunakan data payload, NextAuth membuat sesi untuk setiap pengguna yang diautentikasi dan menyimpan token sesi dalam cookie khusus HTTP yang aman. Token sesi digunakan untuk memverifikasi identitas pengguna dan mempertahankan status autentikasi mereka. Proses ini juga berlaku untuk penyedia lain dengan sedikit variasi dalam penerapannya.
Daftarkan Aplikasi Next.js Anda di Google Developer Console
NextAuth memberikan dukungan untuk layanan autentikasi Google. Namun, agar aplikasi Anda dapat berinteraksi dengan Google API dan mengizinkan pengguna untuk mengautentikasi kredensial Google mereka, Anda harus mendaftarkan aplikasi Anda di konsol pengembang Google dan memperoleh ID klien Dan Rahasia Klien.
Untuk melakukan itu, arahkan ke Konsol Pengembang Google. Selanjutnya, masuk dengan akun Google Anda untuk mengakses konsol. Setelah masuk, buat proyek baru.
Pada halaman ikhtisar proyek, pilih API dan Layanan tab dari daftar layanan di panel menu kiri dan terakhir, Kredensial pilihan.
Klik pada Buat Kredensial tombol untuk menghasilkan ID Klien dan Rahasia Klien Anda. Selanjutnya, tentukan jenis aplikasi dari opsi yang diberikan dan berikan nama untuk aplikasi Anda.
Setelah itu, tentukan URL rute beranda aplikasi Anda dan terakhir tentukan URI pengalihan resmi untuk aplikasi Anda. Untuk kasus ini, seharusnya http://localhost: 3000/api/auth/callback/google seperti yang ditentukan oleh pengaturan penyedia Google NextAuth.
Setelah pendaftaran berhasil, Google akan memberi Anda ID Klien dan Rahasia Klien untuk digunakan di aplikasi Anda.
Siapkan Aplikasi NextJS
Untuk memulai, buat proyek Next.js secara lokal:
npx buat-aplikasi-berikutnya-aplikasi-berikutnya
Setelah penyiapan selesai, navigasikan ke direktori proyek yang baru dibuat dan jalankan perintah ini untuk mengaktifkan server pengembangan.
npm menjalankan dev
Buka browser Anda dan arahkan ke http://localhost: 3000. Ini harus menjadi hasil yang diharapkan.
Anda dapat menemukan kode proyek ini di dalamnya repositori GitHub.
Menyiapkan File .env
Di folder root proyek Anda, buat file baru dan beri nama .env untuk menyimpan ID Klien, Rahasia, dan URL dasar Anda.
NEXT_PUBLIC_GOOGLE_CLIENT_ID= 'ID klien'
NEXT_PUBLIC_GOOGLE_CLIENT_SECRET= 'rahasia'
NEXT_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
URL NextAUTH digunakan untuk menentukan URL dasar aplikasi Anda, yang digunakan untuk mengalihkan pengguna setelah autentikasi selesai.
Integrasikan NextAuth di Aplikasi Next.js Anda
Pertama, instal pustaka NextAuth ke proyek Anda.
npm instal autentikasi berikutnya
Selanjutnya, di /pages direktori, buat folder baru dan beri nama api. Ubah direktori ke api folder, dan buat folder lain bernama autentikasi Di folder auth, tambahkan file baru dan beri nama [...berikutnya].js dan tambahkan baris kode berikut.
impor NextAuth dari"berikutnya-auth/berikutnya";
impor Penyedia Google dari"auth-berikutnya/penyedia/google";
eksporbawaan NextAuth({
penyedia:[
Penyedia Google({
clientId: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: process.env. NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
}),
]
});
Kode ini mengonfigurasi Google sebagai penyedia autentikasi. Fungsi NextAuth mendefinisikan objek konfigurasi penyedia Google yang menggunakan dua properti: ID Klien dan Rahasia Klien yang menginisialisasi penyedia.
Selanjutnya, buka halaman/_app.js file dan buat perubahan berikut pada kode.
impor'../styles/globals.css'
impor { Penyedia Sesi } dari"auth-berikutnya/bereaksi"
fungsiAplikasi Saya({ Komponen, pageProps: { session, ...pageProps } }) {
kembali (
</SessionProvider>
)
}
eksporbawaan Aplikasi Saya
NextAuth Penyedia Sesi komponen menyediakan fungsionalitas manajemen status autentikasi ke aplikasi Next.js. Dibutuhkan a sidang prop yang berisi data sesi autentikasi yang dikembalikan dari API Google yang menyertakan detail pengguna seperti ID, email, dan token akses mereka.
Dengan membungkus Aplikasi Saya komponen dengan komponen SessionProvider, objek sesi autentikasi dengan detail pengguna tersedia di seluruh aplikasi, memungkinkan aplikasi untuk bertahan dan merender halaman berdasarkan status autentikasinya.
Konfigurasi File index.js
Buka halaman/index.js file, hapus kode boilerplate, dan tambahkan kode di bawah ini untuk membuat tombol login yang mengarahkan pengguna ke halaman login.
impor Kepala dari'berikutnya/kepala'
impor gaya dari'../styles/Home.module.css'
impor { gunakanRouter } dari'berikutnya/router';eksporbawaanfungsiRumah() {
const router = gunakanRouter();
kembali (
Buat Aplikasi Berikutnya</title>
"description" content="Dihasilkan dengan membuat aplikasi berikutnya" />
"icon" href="/favicon.ico" />
</Head>
Selamat datang di " https://nextjs.org">Next.js!</a>
</h1>
Mulailah dengan masuk in{' ' }
dengan Akun Google Anda</code>
</div>
)
}
Kode ini menggunakan kait useRouter Next.js untuk menangani perutean dalam aplikasi dengan mendefinisikan objek router. Saat tombol masuk diklik, fungsi penangan memanggil metode router.push untuk mengalihkan pengguna ke halaman login.
Buat Autentikasi Login Halaman
Di direktori pages, buat file baru Login.js, lalu tambahkan baris kode berikut.
impor { useSession, signIn, signOut } from "next-auth/react"
import { useRouter } from 'next /router';
impor gaya dari '../styles/Login.module.css'ekspor default fungsi < span>Login() {
const { data: session } = useSession()
const router = useRouter();
if (session) {
return (
"title">Buat Aplikasi Berikutnya</h1>
Ditandatangani < span>in as {session.user.email}
</h2>