A continuación, tengo un error de tiempo de ejecución no controlado SyntaxError: final inesperado de la entrada JSON cuando uso el inicio de sesión o el cierre de sesión con credenciales de autenticación.
El error es algo extraño porque muestra el siguiente error emergente, pero registra el token y la sesión
Este es mi código de autorización con credenciales:
CredentialsProvider({ id: 'credentials', name: 'Credenciales', async authorize(credentials, req) { if (!(credentials.email.length > 0) || !(credentials.password.length > 0)) { throw new Error('Email or password was not provided'); } const formData = new FormData(); formData.append('username', credentials.email); formData.append('password', credentials.password); formData.append('client_id', credentials.rif); const url = `${process.env.BACK_ENDPOINT}/login/` const response = await fetch(url,{ method: 'POST', body: formData }); if (response.status === 401) { return { 'details': 'error', 'message': 'The username or password is not valid' } } if (response.status === 500) { throw new Error('Have been an error'); } const data = await response.json(); if (response.status > 400 && response.status < 500) { console.error(data) if (data.detail) { throw data.message; } throw data; } if(data.details === 'success'){ return data } return null } }),Esta es mi devolución de llamada de inicio de sesión:
signIn: async({ user, account, profile, email, credentials }) => { // console.log('signIn', {user, account, profile, email, credentials}) if (account.type === 'credentials'){ if(user.details === 'success') return true if(user.details === 'error') return false } },Y este es mi identificador onsubmit en la interfaz:
const objectValues= { email: values.email, password: values.password, rif: values.rif, callbackUrl: '/', } signIn('credentials', objectValues)Encuentro el 'error': en las devoluciones de llamada de [... nextauth].js tuve la devolución de llamada de redireccionamiento sin nada allí, siempre se ejecuta sin retorno:
Callbacks:{ jwt: ({token, user, account, isNewUser}) =>{ some code... }, redirect: async ({url, baseUrl}) => { // NOTHING OF CODE }, session: ({session, token}) => { some code... }, signIn: async({ user, account, profile, email, credentials }) => { some code... } }La próxima vez daré más detalles sobre mi código y el problema, lo siento. Gracias @Bravo por tu tiempo.