Esta biblioteca le permite integrar sin problemas la autenticación de Google en su aplicación Next.js, eliminando la necesidad de desarrollarla desde cero.
La integración de un sistema de autenticación seguro es un paso de desarrollo crucial que no solo proporciona un entorno seguro para los usuarios, sino que también infunde confianza en su producto. Este sistema garantiza que sus datos estén protegidos y que solo las personas autorizadas puedan acceder a la aplicación.
La creación de una autenticación segura desde cero puede ser un proceso lento que requiere un análisis exhaustivo. comprensión de los protocolos y procesos de autenticación, especialmente cuando se manejan diferentes tipos de autenticación proveedores
Con NextAuth, puede cambiar su enfoque para crear las funciones principales. Siga leyendo para aprender cómo integrar el inicio de sesión social de Google en su aplicación usando NextAuth.
¿Cómo funciona NextAuth?
SiguienteAuth.js es una biblioteca de autenticación de código abierto que simplifica el proceso de agregar
autenticacion y autorizacion funcionalidad a las aplicaciones Next.js, así como la personalización de los flujos de trabajo de autenticación. Proporciona una gama de funciones como correo electrónico, autenticación sin contraseña y soporte para varios proveedores de autenticación como Google, GitHub y más.En un alto nivel, NextAuth actúa como un middleware, facilitando el proceso de autenticación entre su aplicación y el proveedor. En el fondo, cuando un usuario intenta iniciar sesión, se le redirige a la página de inicio de sesión de Google. Tras una autenticación exitosa, Google devuelve una carga útil que incluye los datos del usuario, como su nombre y dirección de correo electrónico. Estos datos se utilizan para autorizar el acceso a la aplicación y sus recursos.
Con los datos de la carga útil, NextAuth crea una sesión para cada usuario autenticado y almacena el token de sesión en una cookie segura solo de HTTP. El token de sesión se utiliza para verificar la identidad del usuario y conservar su estado de autenticación. Este proceso también se aplica a otros proveedores con ligeras variaciones en la implementación.
Registre su aplicación Next.js en Google Developer Console
NextAuth brinda soporte para el servicio de autenticación de Google. Sin embargo, para que su aplicación interactúe con las API de Google y permita a los usuarios autenticarse con sus credenciales de Google, deberá registrar su aplicación en la consola para desarrolladores de Google y obtener un Identificación del cliente y Secreto del cliente.
Para hacer eso, navegue a Consola para desarrolladores de Google. A continuación, inicie sesión con su cuenta de Google para acceder a la consola. Una vez que haya iniciado sesión, cree un nuevo proyecto.
En la página de descripción general del proyecto, seleccione el API y servicios pestaña de la lista de servicios en el panel de menú izquierdo y, finalmente, el Cartas credenciales opción.
Clickea en el Crear credenciales botón para generar su ID de cliente y Secreto de cliente. A continuación, especifique el tipo de aplicación de las opciones dadas y luego proporcione un nombre para su aplicación.
Luego, especifique la URL de la ruta principal de su aplicación y finalmente especifique el URI de redireccionamiento autorizado para su aplicación. Para este caso, debe ser http://localhost: 3000/api/autorización/devolución de llamada/google según lo especificado por la configuración del proveedor de Google de NextAuth.
Una vez que se haya registrado correctamente, Google le proporcionará una identificación de cliente y un secreto de cliente para usar en su aplicación.
Configurar la aplicación NextJS
Para comenzar, cree un proyecto Next.js localmente:
npx create-next-app next-auth-app
Una vez completada la configuración, navegue hasta el directorio del proyecto recién creado y ejecute este comando para activar el servidor de desarrollo.
npm ejecutar dev
Abre tu navegador y navega hasta http://localhost: 3000. Este debería ser el resultado esperado.
Puedes encontrar el código de este proyecto en su repositorio GitHub.
Configuración del archivo .env
En la carpeta raíz de su proyecto, cree un nuevo archivo y asígnele un nombre .env para contener su ID de cliente, secreto y la URL base.
SIGUIENTE_PUBLIC_GOOGLE_CLIENT_ID= 'Identificación del cliente'
SIGUIENTE_PÚBLICO_GOOGLE_CLIENT_SECRET= 'secreto'
SIGUIENTE_PUBLIC_NEXTAUTH_URL= ' http://localhost: 3000'
La URL NextAUTH se usa para especificar la URL base de su aplicación, que se usa para redirigir a los usuarios una vez que se completa la autenticación.
Integre NextAuth en su aplicación Next.js
Primero, instale la biblioteca de NextAuth en su proyecto.
npm instalar siguiente autenticación
A continuación, en el /pages directorio, crea una nueva carpeta y asígnale un nombre API. Cambie el directorio al API carpeta, y cree otra carpeta llamada aut. En la carpeta de autenticación, agregue un nuevo archivo y asígnele un nombre [...siguiente].js y agregue las siguientes líneas de código.
importar SiguienteAuth de"siguiente-autorización/siguiente";
importar Proveedor de Google de"próxima autenticación/proveedores/google";
exportarpor defecto NextAuth({
proveedores:[
Proveedor de Google({
ID de cliente: proceso.env. NEXT_PUBLIC_GOOGLE_CLIENT_ID,
clientSecret: proceso.env. SIGUIENTE_PÚBLICO_GOOGLE_CLIENTE_SECRETO,
}),
]
});
Este código configura a Google como proveedor de autenticación. La función NextAuth define el objeto de configuración del proveedor de Google que tiene dos propiedades: una identificación de cliente y un secreto de cliente que inicializa el proveedor.
A continuación, abra el páginas/_app.js archivo y realice los siguientes cambios en el código.
importar'../estilos/globales.css'
importar { Proveedor de sesión } de"siguiente-autorización/reaccionar"
funciónMi aplicación({ Componente, pageProps: { sesión, ...pageProps } }) {
devolver (
</SessionProvider>
)
}
exportarpor defecto Mi aplicación
NextAuth's Proveedor de sesión El componente proporciona la funcionalidad de administración del estado de autenticación a la aplicación Next.js. Toma un sesión prop que contiene los datos de la sesión de autenticación devueltos por la API de Google, que incluye detalles del usuario, como su ID, correo electrónico y token de acceso.
Al envolver el Mi aplicación componente con el componente SessionProvider, el objeto de sesión de autenticación con los detalles del usuario está disponible en toda la aplicación, lo que permite que la aplicación persista y represente páginas en función de su estado de autenticación.
Configurar el archivo index.js
Abre el páginas/index.js archivo, elimine el código repetitivo y agregue el código a continuación para crear un botón de inicio de sesión que dirija a los usuarios a una página de inicio de sesión.
importar Cabeza de'siguiente/cabeza'
importar estilos de'../styles/Home.módulo.css'
importar { usar enrutador } de'siguiente/enrutador';exportarpor defectofunciónHogar() {
constante enrutador = usar enrutador ();
devolver (
Crear la siguiente aplicación</title>
"description" content="Generado por crear la siguiente aplicación" />
"icono" href="/favicon.ico" />
</Head>
Bienvenido a " https://nextjs.org">Next.js!</a>
</h1>
Comience iniciando sesión en{' ' }
con su cuenta de Google</code>
</div>
)
}
Este código usa el enlace useRouter de Next.js para manejar el enrutamiento dentro de la aplicación mediante la definición de un objeto de enrutador. Cuando se hace clic en el botón de inicio de sesión, la función del controlador llama al método router.push para redirigir el usuario a la página de inicio de sesión.
Crear una autenticación de inicio de sesión Página
En el directorio pages, cree un nuevo archivo Login.js, luego agregue las siguientes líneas de código.
importar { usar sesión, iniciar sesión, cerrar sesión } desde "next-auth/react"
importar { useRouter } desde 'siguiente /router';
importar estilos desde '../styles/Login.module.css'exportar predeterminado función < span>Iniciar sesión() {
const { datos: sesión } = useSession()
const enrutador = useRouter();
if (sesión) {
return (
"title">Crear la siguiente aplicación</h1>
Firmado < span>en como {sesión.usuario.email}
</h2>